作业帮 > 综合 > 作业

#include #define X 5 #define Y X+1 #define Z Y*X/2 main() {

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 11:58:22
#include #define X 5 #define Y X+1 #define Z Y*X/2 main() { int a; a=Y; printf("%d %d\n",Z
结果为什么是7 5呢,不解,
宏定义只执行简单的替换操作,就像你把X用5代替一定,Y就用X+1代替就是6,Z用Y*X/2代替,这时候要注意了,是X+1*X/2,也就是5+1*5/2,结果Z就是7,如果你#define Y (X+1),这是带了括号的,然后再去替换到Z里,又是另一个结果,(X+1)*X/2,把5带进去算就是15了,宏定义中带括号和没带括号差别很大的,要特别特别注意,因特他真的是很简单很简单的“替换”操作.