#不知道代码运行过程内容
#代码不太明白
#求代码运行过程
设a=10,b=11,c=12,求下列c语言表达式的值。
1, a%2==0&&c%2==0。
2,a+b<c&&b+c>a。
3,a&&b||c。
4,b+c||b-c||a。
5,!(a>b)&&!c||a>c。
贴文字显示不出来,弄成图片了,详解如下:
考察的是运算符的优先级。在C语言中,&& 、||、! 为逻辑运算符,逻辑运算符两侧的值为真或者假,表达式的运算结果也是真或者假中的一个。0为假,非0为真。
5个表达式的执行过程如下:
1:
先计算a%2,a是10,10除以2的余数是0,0==0成立,所以a%2==0为真,然后执行 c%2,结果是0,0==0成立,c%2==0为真,然后执行 &&运算,两个真值的与运算,结果还是真,所以整个表达式的结果为真。
2:
先执行a+b ,值是21 ,然后执行 21 < c,c是12,表达式为假,所以 a+b<c为假,因为&&运算的时候,只要有一个为假,整个表达式的结果就是假,所以&&后面的不在执行,表达式的整个结果为假。
3:
先执行a&&b ,a和b都不等于0,为真,两个真值的与运算结果也是真,所以 a&&b 的结果为真,因为后面是 || 或运算,或运算的时候,左右两边的值只要有一个为真,整个表达式的值就为真,所以||后面的表达不再执行,整个表达式的结果为真。
4:
先执行b+c,结果是23,23非0,为真,后面是两个||运算,因为或运算只有有一个为真,整个表达式的结果就为真,所有后面的不再执行,整个表达式的结果为真。
5:
先执行a>b,a是10,b是11,a>b不成立,为假,然后执行!运算(取反),所以!(a+b)的结果为真, 然后执行!c,c为12,为真,所以!c为假,因为两者之间是&&与运算,与运算只要有一个为假,整个结果就为假,后面的不再执行,整个表达式的结果为假。
这主要考察运算符优先级,以及逻辑与和逻辑或的熔断性
设a=10,b=11,c=12,求下列c语言表达式的值。
1, a%2==0&&c%2==0。
这是判断a和c是否都是偶数的。由于a=10,c=12,都是偶数,所以整个表达式结果为真
&&的优先级低于%和==
2,a+b<c&&b+c>a。
&&优先级低于+、>和<
所以判断a+b<c和b+c>a是否成立。由于a+b<c不成立,所以后面的b+c>a是不执行的,整个表达式结果为假
3,a&&b||c。
由于a和b都不等于0,所以整个表达式就是真,c无所谓
4,b+c||b-c||a。
同样,由于b+c不是0,所以表达式结果就是真,b-c和a的值无所谓
5,!(a>b)&&!c||a>c。
由于a>b不成立,所以!(a>b)为真,由于c不为0,所以!c为假,从而左侧&&结果为假,又由于a>c为假,所以表达式结果为假
学一下c语言的运算符就明白了;
C语言中的运算符(超全超详细)_东区东区!的博客-CSDN博客_c语言运算符