C语言:已有定义int x=3,y=4,z=5;则表达式 !(x+y)+z-1&&y+z/2的值是?
答案:6 悬赏:10
解决时间 2021-02-13 15:54
- 提问者网友:妖精ξ也會哭
- 2021-02-12 19:02
C语言:已有定义int x=3,y=4,z=5;则表达式 !(x+y)+z-1&&y+z/2的值是?
最佳答案
- 二级知识专家网友:放肆的依賴
- 2021-02-12 20:26
答案是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语言运算符的优先级:
如果同一优先级的运算符,结合次序由结合方向所决定。
参考资料来源:百度百科-运算符优先级
涉及到的运算符: ! () + - && /
运算符优先级为:() ! / + - &&
运算过程:
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语言运算符的优先级:
如果同一优先级的运算符,结合次序由结合方向所决定。
参考资料来源:百度百科-运算符优先级
全部回答
- 1楼网友:24K纯糖
- 2021-02-13 00:29
!(3+4)+5-1&&4+5/2
=!7+4&&4+2
=!11&&6
所以说那个式子的值是:不是11并且是6
- 2楼网友:一场云烟
- 2021-02-12 23:09
1,把运算符优先级搞清楚就好了
- 3楼网友:心痛成瘾
- 2021-02-12 22:25
1
优先级: 算数>条件>关系>赋值
关系中的优先级: 非>与>或
- 4楼网友:傲娇菇凉
- 2021-02-12 21:25
!(x+y)+z-1&&y+z/2 代入数据为!(3+4)+5-1&&4+5/2 !(3+4)为0,剩余5-1&&4+5/2,因为算术运算优先级较高,等价于4&&4+5/2,4&&4为1,结果为3.5 若赋值给执行变量,或直接打印的时用%d,则为3
- 5楼网友:冷眼_看世界
- 2021-02-12 20:49
只是等于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我吧!嘻嘻~~~~~~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯