c语言,设有int x=1 y=1 z=1 c;则执行语句c=--x&&--y||--z;后,x

c语言,设有int x=1 y=1 z=1 c;则执行语句c=--x&&--y||--z;后,x y z分别是多少?

第1个回答  2017-10-27
x,y,z的值分别为0,1,0

逻辑运算符的运算特点是左值确定求右值.逻辑运算符不按照规定的优先级计算,在逻辑表达式的求值过程中,如果从"&&"或"||"左边的运算对象部分能够确定整个逻辑表达式的值,则不再求右边运算对象的值.具体地说:若有a&&b且a的值为0,则无须对b进行运算;若有a||b且a 的值为1,则无须对b进行运算.
表达式按优先级可分为二部分:
第一部分:--x&&--y
第二部分:第一部分值||--z;
--x 为前置运算,先将x值减1后,再参与运算,则结果为0;
根据优化,第一部分后面的--y就不运算了,值仍然为1。第一部分的值为0。
再计算第二部分。
0 ||--z;
z 的值还要减1,变为0。最终逻辑表达式的值为0。
第2个回答  2014-06-09
x=0
y=1
z=0
与运算,左边为假时,右边不再计算,左边为真,两边都计算。或运算,左边为真时,右边不再计算,左边为假时,两边都计算追问

恩,大神,这执行语句要怎么看?为何c=,还会出现x,y,的值呢?z

追答

你分开来看,首先,把x减1赋给c,c现在为0,判断x为0,故与运算左边为假,右边不再计算,与运算结果为假,或运算右边要计算,z减1后,也为0

相似回答