why 50?

泯梦幽思 2008-10-18 01:04:00

#include<iostream>
using namespace std;
int main()

{
int x;
printf("%d\n",(x=5*6,x*2,x+20));
system("pause");
}


结果为什么是50 求助一下?
...全文
142 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxzh1 2008-10-19
  • 打赏
  • 举报
回复
一楼的回答完全正确!
czbever 2008-10-19
  • 打赏
  • 举报
回复
printf("%d\n",(x=5*6,x*2,x+20));

你这个是逗号表达式  逗号表达式的值是等于最后一项的  所以是30+20=50
matrixcl 2008-10-19
  • 打赏
  • 举报
回复
x*2并没有改变x的值,对第三段没有影响
wwwypy 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lq651659889 的回复:]
中间那个x*2怎么没用的吗?请高手指教.
[/Quote]
有用,应为没有给x赋值,只是执行,你可以用 int x=0, m =0, n = 0;
printf("%d",( x=5*6,m=x*2,n=x+20));你在调试环境下可以看到m=60
P_ghost 2008-10-18
  • 打赏
  • 举报
回复
不输出50输出啥??
lq651659889 2008-10-18
  • 打赏
  • 举报
回复
中间那个x*2怎么没用的吗?请高手指教.
backway 2008-10-18
  • 打赏
  • 举报
回复
x=5*6 ->x*2 ->x+20
K行天下 2008-10-18
  • 打赏
  • 举报
回复
X+20又没有赋值
太乙 2008-10-18
  • 打赏
  • 举报
回复
晕,返回的肯定是最后那个逗号后面那个值,虽然x没加20,但是返回的是x+20,而不是x
zgjxwl 2008-10-18
  • 打赏
  • 举报
回复
逗号表达式的值即为最右边的那个操作数的值
Marsaoy 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bargio_susie 的回复:]
看逗号表达式.
[/Quote]

逗号表达式的用法
rollrock1987 2008-10-18
  • 打赏
  • 举报
回复
对对对 开窍了 x的值还是30 只是逗号表达式的值是50了 哈哈

人的脑子就是太想当然了
rollrock1987 2008-10-18
  • 打赏
  • 举报
回复
是啊 为什么会这么奇怪的??难道不是30吗??x+20和x*2 并没有把值赋给x啊

mark
ysmashimaro 2008-10-18
  • 打赏
  • 举报
回复
什么比赛还有这样的题目?
lzr4304061988012 2008-10-18
  • 打赏
  • 举报
回复

(x=5*6,x*2,x+20)返回最后一句,由于前面的执行x=30,所以返回30+20=50;
sys0003 2008-10-18
  • 打赏
  • 举报
回复
这个跟编译器相关的,看编译器怎么编译的了。
bargio_susie 2008-10-18
  • 打赏
  • 举报
回复
看逗号表达式.
clhposs 2008-10-18
  • 打赏
  • 举报
回复
今天上午我参加的那个比赛也有这样的一个题目

太巧了!!!
clhposs 2008-10-18
  • 打赏
  • 举报
回复
首先执行x=5*6
然后执行x*2
接着执行x+20

返回的是x+20 但是x=5*6也执行了
所以是 30+20

65,211

社区成员

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

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