代码如下:
#include<stdio.h>
#define X 5
#define Y X+1
#define Z Y*X/2
main()
{
int a;
a=Y;
printf(“%d %d\n”,Z,–a);//就是这个Z的输出不明白。
}
我在Microsoft Visual Studio来编译的。
程序理解,但是后面的Z的值的输出不大明白。
开始看的时候,以为是15,谁知道,它输出的7。
*和/分别是乘和除吧。5*6/2=15,怎么错了呢?
请问下是怎么回事?
谢谢。
>> 本文固定链接: http://www.vcgood.com/archives/2248
>> 转载请注明: L.Y.Bin_1986 2008年04月01日 于 C语言帝国 发表
Y=X+1 ;
Y*X/2=5+1*5/2=5+2=7
如楼上所示
Y是X+1 而不是 (X+1)哦
#define Z Y*X/2
这里错误,应该这样定义
#define Z ((Y)*X/2)否则系统将会这样计算
5+1*5/2=5+2=7!
谢谢大家了,已经明白。