运行程序后为什么a=10,b=5,c=15;

2024-11-06 10:54:23
推荐回答(2个)
回答1:

宏定义只运行到a=a+b的说法是错误的。
宏定义又称为宏代换、宏替换,预编译过程会将宏握差名替换为对应的字串。
因此c=p(a,b);即c=a=a+b;b=a-b;a=a-b;; <----这里冲皮颤是还有一个空语句
运行结果为a=10,b=5,c=15;
同理,#define p(a,b) a=a+b,b=a-b,a=a-b
预编译后,即c=a=a+b,b=a-b,a=a-b;
逗号运算的顺序是从左到右散败
运行结果为c=15,b=5,a=10
希望可以帮到你。(*^__^*)

回答2:

因为C的值为定义中的a+b的值。在宏虚老定义后面用分号隔开了就氏誉磨变成了歼斗单独的语句了。所以宏定义只运行到a=a+b;所以为15;