int a=b=c=0; a++&&b++||c++;求 a,b,c 最好有 过程分析

int a=b=c=0; a++&&b++||c++;求 a,b,c最好有 过程分析谢谢
2024-12-27 23:38:13
推荐回答(3个)
回答1:

首先,根据逻辑符号优先级,公式改写成:(a++&&b++)||c++。
然后,用a在“++”之前的值作为(a++)这个表达式的结果返回,即0,被转换成逻辑假,这时a变成1了,但是a++表达式的结果是0。因此根据“&&”的短路径求值原则,(a++&&b++)中的表达式b++不会求值,即b仍然是0,表达式(a++&&b++)结果为逻辑假。
最后,根据“||”多路径求值原则,左边表达式逻辑假,故而对表达式c++求值,故而c的值变成1。
最终结果是:a=1,b=0,c=1.

回答2:

结果是
a=1,b=0,c=1
&&的优先级比||高,先做a++&&b++
a++返回a当前的值0, a++为假,那么a++&&b++就必然为假,于是b++就没必要执行,被忽略,然后求0||c++, 于是c++被执行
综上就是a++和c++被执行, b++被忽略
最终a=1,b=0,c=1

回答3:

a = 1, b = 0, c = 1
语句中a,b,c都是后自加, 所以是先进行表达式的运算, 再进行后自加, a++ && b++这部分时, a=0, 所以会发生短路, 不会执行b++,整个a++&&b++都为假 然后会执行判断c++的值,
过程中只会对a和c进行后自加运算, 所以a和c为1, b=0