关于逗号运算符的问题

charkie 2006-10-24 08:37:23
a=3*5,a*4
上述表达式的返回值为b

结果a=,b是多少?
查过优先级表,从小到大 ,<=<*
所以结果应该是a=60,b=60(书上也是这么说,而且声称该书上的程序均“通过vc6实验”)
可是在vc6中,结果是a=15,b=15
为什么会这样呢?

如果将表达式改为a=3*5,a*=4,
=与*=优先级相同
结果应该还是a=60,b=60
运行结果这下终于变成了a=60,b=60
...全文
224 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jokar 2006-10-24
  • 打赏
  • 举报
回复
逗号表达式就是个顺序求值过程,整个表达式的值是最左端表达式的值
--------------
刚才试了下,好像是最右端表达式的值
shw014 2006-10-24
  • 打赏
  • 举报
回复
b=(a=3*5,a*4);
a=15,b=60
taodm 2006-10-24
  • 打赏
  • 举报
回复
楼主,你的完整代码是啥,不会是b = a=3*5,a*4;吧。
csShooter 2006-10-24
  • 打赏
  • 举报
回复
http://www.jzit.name/JPKJ/ITC/WEB/c/ShowArticle.asp?ArticleID=12
csShooter 2006-10-24
  • 打赏
  • 举报
回复
a=3*5,a*4
----------------
我的运行结果是:
b = 60
a = 15
Jokar 2006-10-24
  • 打赏
  • 举报
回复
在我的编译器下没通过编译。
----------------------
怀疑lz打错....
weijiangshanwww 2006-10-24
  • 打赏
  • 举报
回复
a=,b;

========================
在我的编译器下没通过编译。
Jokar 2006-10-24
  • 打赏
  • 举报
回复
同意ckt1120(DeClothes-Mavin), 逗号运算符的优先级最低, 接着就是表达式的顺序求值了:)
csShooter 2006-10-24
  • 打赏
  • 举报
回复
关注
ckt 2006-10-24
  • 打赏
  • 举报
回复
a=3*5,a*4
先运行3*5,然后赋值给a,a=15.
在运行a*4结果为60,不赋值给任何变量.

a=3*5,a*=4
先运行3*5,然后赋值给a,a=15.
在运行a*4结果赋值给a,a=60;
Jokar 2006-10-24
  • 打赏
  • 举报
回复
逗号表达式就是个顺序求值过程,整个表达式的值是最左端表达式的值
chenjun799 2006-10-24
  • 打赏
  • 举报
回复
a=3*5,a*4
上述表达式的返回值为b
~~~~~~~~~~~~~~~~~~~~~~~~~~~
那a=15;然后b的值是逗号表达式中最后的表达式的值,也就是15*4=60了
weijiangshanwww 2006-10-24
  • 打赏
  • 举报
回复
a=3*5,a*=4

表达式3*5,a*=4
运行了3*5,TRUE,就结束了。

a=15,(至少在我的编译器是15)

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧