#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呢,不解,

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 19:17:58
#include#defineX5#defineYX+1#defineZY*X/2main(){inta;a=Y;printf("%d%d\n",Z结果为什么是75呢,不解,#include#defi

#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呢,不解,
#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呢,不解,

#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了,宏定义中带括号和没带括号差别很大的,要特别特别注意,因特他真的是很简单很简单的“替换”操作.