#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}
结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?
为什么a&&b的结果会是这样?
#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}
结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?
2006-09-17 15:27
2006-09-17 16:15
2006-09-17 17:17
2006-09-17 17:18
2006-09-17 17:47
是这样啊
谢谢您的回答!那这样的话...下面的应该是这样的结果吧
a=b=c=2;
++a&&++b||++c printt(a,b,c);
a=3 b=3 c=2 (是这样的结果吧)!
这样的话.语句里只有||符号后面的结果不用计算是吧?
2006-09-17 17:52
#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}
结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?
编译器执行逻辑运算时,判断||前为真,则不执行||后的运算,&&前为假则不执行&&后的运算.
那个是宏定义,哪个地方出现了就将其后面的字符串替换.

2006-09-17 18:12
2006-09-18 09:40
#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}
结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?
输出为a=3 b=2 c=
这个条语句#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);这里少加d,今人产生误会.

2006-09-30 17:03
2006-10-01 11:35