a=0 b=6 c=7求a++&&b++&&c++和a b c的值?算的过程是什么样的?为什么不是

a=0 b=6 c=7求a++&&b++&&c++和a b c的值?算的过程是什么样的?为什么不是a++先算变成a=1?

a++是先运算,后加1,与++a不同,++a是先加1,再运算。
先判断a,a=0,因为后面的表达式为逻辑与关系,所以整个表达式为false(0),由于c语言逻辑与采用短路运算,所以&&b++和&&c++不在运算。因为判断了a,所以a++要执行,所以整个表达式的值为0;a=1;b=6;c=7
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-03
因为a为0,所以a++&&b++&&c++的值因a++为0而使整个表达式的值为“假”;且,a++&&后的表达式都不被执行,所以最后a==1,b==6,c==7。追问

++的优先级不是比&&高吗?为什么不是先算a++?

第2个回答  2016-01-03
0
1
6
7
表达式 a++&&b++&&c++ 先判断a++最初的 a =0 为false 后面的不会去计算了,但是此时a+1了,先用a后加1的追问

++的优先级不是比&&高吗?为什么不是先算a++?

追答

是先算的a++
a++ 表示 先用a的原值,然后在再原值的基础上加1更新原值

追问

先算a++的话不是变成1&&7了吗

追答

a++ 第一次取得是a的原值 0 和后面的 进行 与的,然后a的值才自增的。这和++a正好相反的。

本回答被提问者采纳
相似回答