|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求教逗号运算问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
3056
人关注过本帖
标题:
求教逗号运算问题
只看楼主
加入收藏
夜风缘
等 级:
论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
结帖率:
66.67%
楼主
收藏
已结贴
√
问题点数:10 回复次数:22
求教逗号运算问题
#include<stdio.h>
main()
{
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行是2 3 1,虽然说赋值运算符优先级在逗号运算符上,但是举个例子:a=3*5,a*4,a+5;结果从左到右:a=15,a*4a值不变,a+5=20,最后取最后一个表达式的值,20。
按以上流程,应该是2 3 3,不解,求解答,谢谢。
搜索更多相关主题的帖子:
表达式
优先级
2017-02-19 22:23
举报帖子
使用道具
赠送鲜花
kin3z
等 级:
职业侠客
威 望:
4
帖 子:157
专家分:390
注 册:2011-4-24
第
2
楼
收藏
得分:2
z=x++,y++,++y;
z = x++ ; 也就是x的1给了z,然后x自增到2。
y++,++y; 把y的1自增到3。
因此 z = 1 , y = 3 , x = 2 .
2017-02-19 23:00
举报帖子
使用道具
赠送鲜花
九转星河
来 自:长长久久
等 级:
贵宾
威 望:
52
帖 子:5023
专家分:14003
注 册:2016-10-22
第
3
楼
收藏
得分:2
这样的y++,和++y写在一行是属于未定义行为~应该要避免~会可能因为编译器行为不同而会有不同的结果~
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-19 23:26
举报帖子
使用道具
赠送鲜花
九转星河
来 自:长长久久
等 级:
贵宾
威 望:
52
帖 子:5023
专家分:14003
注 册:2016-10-22
第
4
楼
收藏
得分:0
回复 3楼 九转星河
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-19 23:26
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9025
专家分:54030
注 册:2011-1-18
第
5
楼
收藏
得分:2
一点儿问题都没有
z=x++,y++,++y;
是 (z=x++),y++,++y; 而非 z=(x++,y++,++y);
a=3*5,a*4,a+5 这个表达式的值是20,而非a的值是20
2017-02-20 08:28
举报帖子
使用道具
赠送鲜花
九转星河
来 自:长长久久
等 级:
贵宾
威 望:
52
帖 子:5023
专家分:14003
注 册:2016-10-22
第
6
楼
收藏
得分:0
回复 5楼 rjsp
看来我的基础还不是太好~学习了~
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-20 10:36
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
7
楼
收藏
得分:2
我也没弄明白 c设计者弄这个逗号运算符 有神马用
DO IT YOURSELF !
2017-02-20 10:37
举报帖子
使用道具
赠送鲜花
yuantkong
等 级:
论坛游民
威 望:
3
帖 子:82
专家分:86
注 册:2016-5-17
第
8
楼
收藏
得分:2
a=3*5,a*4,a+5
a的值应该是15, 因为后面的运算都没有把值赋给 a
2017-02-20 12:03
举报帖子
使用道具
赠送鲜花
夜风缘
等 级:
论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
第
9
楼
收藏
得分:0
回复 5楼 rjsp
的确是这样,但是a=3*5,a*4,a+5难道不能写成(a=3*5),a*4,a+5;按这么说,这个表达式值就是15。我不明白的是这个表达式应该取的是最后一个式子的值,加了括号,不也还是逗号运算符么。不管前面怎么运算,不都应该取最后一个表达式的值,难道是因为变量的原因?z=x++,y++,++y;因为前后变量不同,所以不能一概而论,如果改成z=x++,y++,x+1;的话,就应该是z=2了吧。这样想对吗?
2017-02-20 13:10
举报帖子
使用道具
赠送鲜花
夜风缘
等 级:
论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
第
10
楼
收藏
得分:0
回复 8楼 yuantkong
很遗憾告诉你,a=20,这个我很确定,我只是举个例子说明,对这个结果并不怀疑。
2017-02-20 13:12
举报帖子
使用道具
赠送鲜花
23
1/3页
1
2
3
快速回复:
求教逗号运算问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.024889 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved