#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是……?
是这样啊谢谢您的回答!那这样的话...下面的应该是这样的结果吧
a=b=c=2;
++a&&++b||++c printt(a,b,c);
a=3 b=3 c=2 (是这样的结果吧)!
这样的话.语句里只有||符号后面的结果不用计算是吧?
#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是……?
编译器执行逻辑运算时,判断||前为真,则不执行||后的运算,&&前为假则不执行&&后的运算.
那个是宏定义,哪个地方出现了就将其后面的字符串替换.
#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,今人产生误会.