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

 我来答
李丹溪仍妞
2020-02-09 · TA获得超过3万个赞
知道大有可为答主
回答量:9953
采纳率:30%
帮助的人:879万
展开全部
只是等于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我吧!嘻嘻~~~~~~
经海秋皋骄
2019-01-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:786万
展开全部
!(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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式