鱼C论坛

 找回密码
 立即注册
查看: 5186|回复: 8

C语言小菜鸟求大神赐教

[复制链接]
发表于 2013-8-16 20:18:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x



今天突然想到一个逗号运算符的问题,视频里说的是第2个表达式才为y的值,但程序出来以后答案显示两个都是6,如果按视频所说就应该是y=b+c=10,x=a+b=6才对呀。我有回头看了下定义,是不是应该是表达式1为前面要求赋值的对象的值,然后表达式2应该是前面表达式1这个逗号表达式的值呢?可这样的话也不对啊,怎么都不可能求出来x和y同为6呀。求大神赐教!   未命名.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-16 20:29:46 | 显示全部楼层
赋值优先级比逗号运算符要高~要实现题意:y=((x=a+b),(b+c));
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-16 20:49:28 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-16 22:31:26 | 显示全部楼层
本帖最后由 Jany 于 2013-8-16 22:35 编辑

第一种
表达式y=(x=a+b),(b+c);这个直接为算出y与X相等,而是你楼上的y=((x=a+b),(b+c));这个为逗号表达式为y=表达式2的值及10,因为逗号表达式先计算表达式1,再计算表达式2。。。。。。。。。这个算直接给y赋值,
第二种
y=((x=a+b),(b+c));这个先计算x的值为a+b=6,X赋值6,而这里的A和B的值没有改变,所以再计算表达式2  (b+c),因为b的值没有改变,依然为4,所以(b+c)的值为10.赋值为y,逗号表达式取表达式2为值,得到y赋值为10,
注释:每个优先不一样,表达的形式也有不用

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

使用道具 举报

 楼主| 发表于 2013-8-17 08:14:50 | 显示全部楼层
Jany 发表于 2013-8-16 22:31
第一种
表达式y=(x=a+b),(b+c);这个直接为算出y与X相等,而是你楼上的y=((x=a+b),(b+c));这个为逗号表达式 ...

意思是像这种y=(x=a+b),(b+c);其实后面的是没有实际意义的是吗? 头有点点蒙了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-17 08:28:26 | 显示全部楼层
赋值运算符的优先级是14,而逗号表达式的优先级是15,,,所以说整个运算过程是这样的,先X=a+b,,然后呢由于赋值优先级高,执行Y=X,最后是b+c,,,,因此执行完就成了Y,10,,,,所以整个的表达式值为10,,,如果你要实现你说的功能y=(  (x=a+b),(b+c)  ) 要加个括号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-17 09:01:42 | 显示全部楼层
With_You 发表于 2013-8-17 08:14
意思是像这种y=(x=a+b),(b+c);其实后面的是没有实际意义的是吗? 头有点点蒙了

可以怎么说
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 10:18:33 | 显示全部楼层

嗯,这下明白了,3Q
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 10:20:08 | 显示全部楼层
张三疯 发表于 2013-8-17 08:28
赋值运算符的优先级是14,而逗号表达式的优先级是15,,,所以说整个运算过程是这样的,先X=a+b,,然后呢由于 ...


嗯,这下明白了,3Q
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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