a=1,b=0,c=0则a| | b++&&c++的结果,和b,c的值

如题所述

正常情况下,应该是 true ,0,0
应为编译器一般支持逻辑短路优化(就是A && B如果a是false,就不执行B的运算,A||B,如果A是true,也不进行B的运算),
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-01
0 1 1追问

过程怎么思考的啊?

追答

a为1,b++ &&c++ 是0&&0 自加是变量的本身所以是0。a||0结果是1。不好意思我看错运算顺序了!

追问

那b和c的值都为1?

追答

因为先执行变量的本身,然后进行加1,所以就是1了!

C语言中。int a=1,b=0,c=1; 执行语句 !b||++a&&++c 后,a,b,c
对于!b||++a&&++c;按照规定, 要先计算 && (&&的优先级比||高)也就是需要计算出 ++b和c++;但是按照优化, 只要计算出 a>0 就可以了,不需要计算出 ++b和c++,“||”在这里起到了短路的功能(短路就是,当第一条表达式能决定整条表达式的结果,那么后面的语句都不执行!),这也叫做布...

c++中a=1 b=0 c=a||b++
a=1;b=1;

...{ int a=0,b=0,c=0,d=0; (a++ && b++) ? c++ : d++; printf(_百度...
所以a=1,b=0,c=0,d=1。所以答案选D

int a,b,c a=b=c=0 a++&&b++‖c++ 为什么a,c是1而b是0 &&是a为
a++是先判断a的值,自加运算等所有条件判断完毕才进行。因为a=0,所以条件不成立。因为计算机觉得a++都已经不成立了那么&&后面的内容成不成立都无所谓了,就没有去处理它,b++被华丽丽的忽视了。接着是||,因为前面部分是假,所以还要看看c++是不是真才能判断条件的真假。同a++一样,c++也为假....

int a=b=c=0; a++&&b++||c++;求 a,b,c 最好有 过程分析
这时a变成1了,但是a++表达式的结果是0。因此根据“&&”的短路径求值原则,(a++&&b++)中的表达式b++不会求值,即b仍然是0,表达式(a++&&b++)结果为逻辑假。最后,根据“||”多路径求值原则,左边表达式逻辑假,故而对表达式c++求值,故而c的值变成1。最终结果是:a=1,b=0,c=1....

已知a=1,b=2,c=3,则表达式a*b&&(b++,!c)&&(a++,c++)的值是。该表达式...
所以,(b++,!c)经计算后为(2,0),逗号表达式的值是0,同时b为3,而a*b&&(b++,!c)&&(a++,c++)=2&&0&&(a++,c++)已为假,不会再计算(a++,c++),因此,结果是表达式a*b&&(b++,!c)&&(a++,c++)的值是0,该表达式运算过后,a=1,b=3,c=3。

C语言中 int a=0,b=0,c=0; if(a&&++b) c++; printf("%d,%d\\n",b,c...
因为a=0所以&&右边的就被短路了,不被执行, 所以最后a, b, c的值都不变,都为0

c语言中“与”和“或”的优先级是什么?
在&&运算中,如果&&前面的逻辑值为0(如:令a=0;a++&&b++,此时,a还没有进行++运算,仍为0。但是在本语句结束后就自加1),则结束本语句;如果&&前面的逻辑值为1,则继续判断&&后面的值是否为1,如果为1,则继续判断后面的逻辑运算;如果为0,而结束本语句。优先级 优先级与求值顺序无关。

inta=0,b=1,c=1,关于逻辑表达式a ++|| b++ &&c++中各个部分的执行顺序...
(a ++) || ( (b++) && (c++) )又由于||和&& 运算符的短路效应,必然先执行左侧表达式,所以是先表达式a++的判断,表达式值为0,所以仍然要执行右侧表达式( (b++) && (c++) )之后同理,依次执行b++和c++ 注意优先级值不是先执行什么后执行什么,而是语法分析时为了保证表达式不出现歧义而做的...

c语言中与或的优先级
{ int a,b,c,d;a=0;b=0;c=1;d=a++||b++&&c++;\/*运算过程是:第一步,判断a 的逻辑值是否为0,可知为0,因此继续往后判断(因为a++这个表达式参与了判断,所以在这条语句结束后,a会变成1);第二步,判断b,可知b的逻辑值0,所以a||b==0,因为之后遇到的是&&运算,而又有&&前的...

相似回答
大家正在搜