赋值语句的返回值就等于右值(也就是所赋的值)
所以对于(a=2)&&(b=-2)来说,
赋值语句a=2的返回值为2,
赋值语句b=-2的返回值为-2,
2&&(-2)为真(也就是1),
所以(a=2)&&(b=-2)的值为1
所以printf( %d ,(a=2)&&(b=-2);的输出结果为1
首先说明应该是“%d”,少了个括号。
(a=2)&&(b=-2)是个逻辑运算,先将a赋值2,b赋值-2,因为都不等于0,所以该逻辑运算的结果是真,在C语言中,真的数值是1。所以最后答案为1。
值为1
中间是个逻辑运算符
a=2为赋值语句且没有赋0,值为真1
b=-2也是赋值语句,并且也没赋0,值也为真1
所以1&&1==1,最后输出为1
其实就是&&号的右边是0,答案也是1
这是由于&&运算符的短路特性引起的
在逻辑运算中 0代表假,非零代表真
C语言中,非0整数都为真,所以负整数当然也是真的,peace。