#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为真,后边表达式不用计算
----------------解决方案--------------------------------------------------------
printt(a,b,c);没见过,谁能讲讲~
----------------解决方案--------------------------------------------------------
printt(a,b,c);没见过,谁能讲讲~
宏展开
----------------解决方案--------------------------------------------------------
a=b=c=2
++a||++b&&++c;(这是面的++b&&++c)是怎么计算得出2的结果的&&前后是什么样的关系?
----------------解决方案--------------------------------------------------------
++a为真,后边表达式不用计算
是这样啊谢谢您的回答!那这样的话...下面的应该是这样的结果吧
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是……?
编译器执行逻辑运算时,判断||前为真,则不执行||后的运算,&&前为假则不执行&&后的运算.
那个是宏定义,哪个地方出现了就将其后面的字符串替换.
----------------解决方案--------------------------------------------------------
吼吼。。。高兴啊。。连版主也来帮解。。谢谢ww84020209跟nuciewth
----------------解决方案--------------------------------------------------------
#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,今人产生误会.
----------------解决方案--------------------------------------------------------
这个东西其实和离散数学有关,最近我想写一篇关于离散于c的文章
----------------解决方案--------------------------------------------------------