0
#include <stdio.h>
#define abs(x) x > 0 ? x : -x
int main(void) {
printf("%d\n", abs(abs(3 - 5)));
return 0;
}
爲什麼上面的程序輸出8而不是2而下面的程序輸出2呢?爲什麼這個程序輸出8?
#include <stdio.h>
int abs(int x) {
return x > 0 ? x : -x;
}
int main(void) {
printf("%d\n", abs(abs(3 - 5)));
return 0;
}
更改'#define abs(x)x> 0? x:-x'到'#define abs(x)((x)> 0?(x): - (x))' – ouah
程序[outputs negative 8](http://ideone.com/H434lj),不是8. – dasblinkenlight
我最近注意到我發佈了代碼,如果表達式是'#define abs(x)(x> 0?x:-x)',那麼它會[輸出正八](http:// ideone.com/7WY5Ie),@dasblinkenlight,謝謝你的方式。 –