C语言#define有问
#define SQUARE(X) X*Xvoid main(void){
printf("Square=%d,SQUARE(10+2));
}
这个程序的执行结果为什么是32?
解析说10+2*10+2=32。很疑惑为啥是这样
20+12不就32 SQUARE((10+2))要算12*12要这样不然不会给你先算10+2的 就会变成10+2*10+2不就先算乘后算加吗 define就是文本替换,程序会按你写的先替换,然后在运算出数值 你这个程序还能有结果?一堆全角字符。。。 define 是替换 不是函数那种调用
X* X用10+2 替换X就成了10+2*10+2=32
你可以试试下面这个
#define SQUARE(X) (X)*(X)
页:
[1]