C语言:已有定义int x=3,y=4,z=5;则表达式 !(x+y)+z-1&&y+z⼀2的值是?

2024年11月20日 07:02
有2个网友回答
网友(1):

答案是1。

涉及到的运算符: ! () + - && /

运算符优先级为:() ! / + - &&

运算过程:

x=3,y=4,z=5

!(x+y)+z-1&&y+z/2

!(3+4)+5-1&&4+5/2

所以表达式计算步骤为

!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2

!7为 0

-> 0+5-1&&4+5/2

5/2 整数除整数得整数 2

-> 0+5-1&&4+2

-> 4&&6

逻辑运算 &&

扩展资料

C语言运算符的优先级:

如果同一优先级的运算符,结合次序由结合方向所决定。

参考资料来源:百度百科-运算符优先级

网友(2):

只是等于1的,我是经过turbo c2.0编译过的,答案应该没什么问题的,程序是: main() { int x,y,z,k; x=3;y=4;z=5; k=0; k=!(x+y)+z-1&&y+z/2; printf("%d",k);} 答案为什么会等于1呢?那是因为运算级别的问题,根据运算级别,实现算括号里面的先,所以程序就变成!7+z-1&&y+z/2; 然后就算!运算,由于7是大于1的,也就是真,所以!真就是假,也就是0,所以函数就变成0+z-1&&y+z/2; 然后再算除号的,由于你这里两个都是整形的,所以小数点后面的数忽略,所以就变成0+z-1&&y+2; 接着计算加减运算,也就是变成4&&6; 因为4和6都是大于1的数,所以就是真,由于&&两边都是真的话,输出的就是真,所以结果就是1。 要是还有什么不明白的话,就mm我吧!嘻嘻~~~~~~