2013年11月21日 星期四

[觀點][C語言]#define之後代入的數要小心

#include <stdio.h>

#define S(z) (z*z)

void foo(int x, int *py)
{
    int n = S(x+1);
    x = *py;
    *py = n;
}

int main()
{
    int a = 2;
    int b = 10;
    foo(a, &b);
    ++b;
    printf("a = %d b= %d\n", a, b);
    return 0;
}
[Answer]
a = 2 b= 6

a = 2代入S(2+1)則2+1*2+1=5,不是3*3=9

沒有留言:

張貼留言