C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/2的值是?
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 18:52:13
![C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/2的值是?](/uploads/image/z/554737-49-7.jpg?t=C%E8%AF%AD%E8%A8%80%EF%BC%9A%E5%B7%B2%E6%9C%89%E5%AE%9A%E4%B9%89int+x%3D3%2Cy%3D4%2Cz%3D5%3B%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F+%28x%2By%29%2Bz-1%26%26y%2Bz%2F2%E7%9A%84%E5%80%BC%E6%98%AF%3F)
C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/2的值是?
C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/2的值是?
C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/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我吧!