这个程序应该怎么理解,最后结果为什么是211.不是111,c开始是0后来为什么变1了
因为x大于0,因此逻辑或左侧表达式为真,这样右侧表达式是不会运行的,也就是y++是不执行的。然后表达式结束后,x会加上1变为2。c的值就是表达式的结果,表达式结果为真,所以c值就是1
首先c的赋值是一个或运算判断的结果,只会是0或者1,然后x++和y++是或运算的两个判定,或运算两个有一个成立判断的值就为真,即值为1,x++这个判定已经为真了,编译器有可能优化就不会去执行后面的y++了,所以x++执行后值为2,y值还是1,c是1;然后你可以把x初始化为0试下,这样结果应该是121
c= x++ || y++
相当于
c = x; x=x+1
|| 会先判断左边的表达式,左边的表达式大于0(也就是为真),则||右边的表达式就不执行。
所以上面的y++没有执行
1.首先将(x++||y++)看成一个整体,其中先执行x++,x变为2
2.由于是短路或,左边x==1,显然为true,所以整个表达式为真,右边不执行了,本行执行完后x变为2
3.表达式为真,计算机中默认值为1
4.表达式为真的结果是1赋值给c