鱼C论坛

 找回密码
 立即注册
查看: 2864|回复: 7

为什么Y=6,不是表达式后面的B+C=10呢?

[复制链接]
发表于 2014-8-9 18:17:34 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
void main()
{
int a=2,b=4,c=6,x,y;
y=x=a+b,(b+c);
printf("y=%d,x=%d",y,x);
}  

最佳答案

查看完整内容

y=x=a+b,(b+c);首先计算左边的加号,因为赋值优先级大于逗号,然后赋值x,y,再运行(b+c)(没有保存),所以最后是6.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-9 18:17:35 | 显示全部楼层
y=x=a+b,(b+c);首先计算左边的加号,因为赋值优先级大于逗号,然后赋值x,y,再运行(b+c)(没有保存),所以最后是6.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-9 18:26:06 | 显示全部楼层
逗号的优先级低
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-9 18:49:29 From FishC Mobile | 显示全部楼层
先计算左边y=x=a+b
然后计算(b+c)
最后(y=x=a+b,(b+c))的值是b+c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-9 22:47:04 | 显示全部楼层
这种问题不要转牛角尖
没什么实际意义的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-9 23:50:11 | 显示全部楼层
楼主改成y=x = ( a+b , b+c) ;
就可以了。。
原因就是优先级不一样,
加上( , ) 才是真正的逗号运算符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-10 09:41:38 | 显示全部楼层
还是劝你一句你要是这么喜欢转这种牛角尖你就死定了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 01:05:58 | 显示全部楼层
算术运算符要高于,运算符,所以X=6  相当于y=6,10  所以y=6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-30 03:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表