三十二题的printf计算不都成立啊

 

下面是我的理解,供参考:

运行出来的答案是D,具体分下如下:

第一个式子,首先计算&&左边这个表达式,>和>优先级一样,根据从左到右的结合律,先计算-1>x , x=3, -1>x为假,结果即为值0,然后计算0>-10,为真,左边式子结果即为值1;然后计算&&右边的表达式, 同理先计算1<x, x=3, 1<3为真,结果即为值1,然后计算1<10, 为真,右边式子结果即为值1;然后计算1&&1,结果真,所以第一个式子的结果为值1.

第二个式子,同样也计算&&左边的式子,然后先计算-1>y , y=0 ,-1>0为假,结果为值0,然后计算0>-10,为真,左边式子结果为值1;然后计算&&右边的式子,先计算1<y , y=0 , 1<0为假,结果为值0,然后计算0<10 ,结果为真,即值1,所以右边的式子的结果为1;接着计算1&&1, 为真,即值1,所以第二个式子的结果为1.

测试代码如下:


#include <stdio.h>

int main(void){
    
    int x=3,y=0;
    printf("%d,%d",-1>x>-10&&1<x<10,-1>y>-10&&1<y<10);
    
    return 0;
} 

img