一:&&的运算
&&中左式子为假,右式子不执行。
关系表达式的值是一个逻辑值,即“真”或“假”。因为m=a>b等价于m=(a>b)。而a<b,所以m的值为0。又因为&&中左边的式子为0,右边的式子不执行,所以n仍然=2。
二:||的运算
||中,若左式子为真,右边不用执行。
举一个栗子:
因为if((j++||k++)&&i++)中是两个逻辑运算,逻辑运算的执行是只要能判断其真假就行了,不一定要全部执行到,对于第一个逻辑运算&&,(两者都为真才为真,或其中一个表达式为假就为假)首先判断&&左端的表示式,若其为假则无需判断其右的表达式,若其为真则两边表达式都需判断,而&&左面表达式为真,所以&&右面表达式还需判断,所以i++是执行过的,再看(j++||k++),逻辑运算||,两端表达式其一为真就为真,两者为假才为假,由于||左表达式是真所以无需再判断其或的表达式,所以k++不执行,j++执行了。所以最终答案i=j=k=2
举两个栗子:
因为&&的优先级高于||,所以式子可以变形为w=++x||(++y&&++z)。因为++y为真,所以++z可执行。所以y=2,z=2。又因为++x为真,在||的左侧,所以右边的式子不用执行。仍然为原数。所以y=1,z=1,x=2。