鱼C论坛

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

求助这个是怎么回事呢

[复制链接]
发表于 2013-5-10 09:19:38 | 显示全部楼层 |阅读模式
1鱼币
我是初学者,所以问些简单的问题好心人帮忙解答一下

刚看视频看到一个例题,甲鱼老师在里面没有做,我自己写了一遍
      int a = 2, b = 4, c = 6, x, y;
      y = (x = a + b),(b + c);
      printf("y = %d, x = %d\n", y, x);
他讲的是y的值是(b + c),可是b + c = 10啊
然后我调试出来的是y=6,x=6,这是为什么呢,

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-10 10:27:55 | 显示全部楼层
本帖最后由 小新110 于 2013-5-10 10:28 编辑

赋值运算符的优先级是14,而逗号表达式的优先级是15,
y = (x = a + b),(b + c);
等价于  
(y = (x = a + b)),(b + c);
所以 x = y = 6
参考资料:
http://baike.baidu.com/view/2393109.htm


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-10 11:13:38 | 显示全部楼层
谢谢,终于搞懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-10 13:23:36 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-11 12:53:32 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-11 18:39:11 | 显示全部楼层
赋值运算符的优先级大于逗号的优先级,
y = (x = a + b),(b + c);  相当于x = a + b;y=x;  在这个l例子中b+c没有作用
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-14 16:36:36 | 显示全部楼层
x=6 ;y=x;:dizzy:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-14 20:39:48 | 显示全部楼层
逗号运算符注意一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-28 20:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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