与宏

时间:2016-08-12 06:04:09

标签: c

请解释输出 - 我输出为20, 但如果我没错,那应该是64岁。

#include<stdio.h>
#define SQUARE(X) (X*X) 
main() 
{ 
    int a, b=6; 
    a = SQUARE(b+2); 
    printf("\n%d", a);
}

1 个答案:

答案 0 :(得分:3)

正确的结果是20。

宏是简单的文本替换。

要查看结果为20,只需将X替换为b+2即可。然后你有:

b+2*b+2

因为b是6,所以

6+2*6+2

是20

使用宏时,使用括号非常重要,因此宏看起来应该是

# define SQUARE(X) ((X)*(X)) 

然后结果将是64,因为评估是

(b+2)*(b+2)

(6+2)*(6+2)

8*8

64