下面的程序是打印49
從#定義SQR(X)(X * X)
#include <stdio.h>
#define SQR(x) (x*x)
void main(void) {
int x, y; x = 5;
y = SQR(++x);
printf("y is %d\n", y);
}
我不明白我錯過了什麼不正確的答案。
這裏就是我理解它是如何可能的工作
在SQR(++x)
,++x
將被評估爲6
和x*x
後36
應返回。
因此y = 36
但答案是
想想宏如何工作以及表達式評估的次數。 – 2014-09-13 10:37:07
@Matt:不,它本身不是未定義的。 – usr2564301 2014-09-13 10:38:36
@Jongware是的,它是 – 2014-09-13 10:38:58