| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2899 人关注过本帖
标题:求教逗号运算问题
取消只看楼主 加入收藏
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:9 
求教逗号运算问题
#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
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分: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
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 8楼 yuantkong
很遗憾告诉你,a=20,这个我很确定,我只是举个例子说明,对这个结果并不怀疑。
2017-02-20 13:12
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 2楼 kin3z
你说的,我都知道,可问题不出在这儿。
2017-02-20 13:13
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 3楼 九转星河
二级里面的题目,倒不是专门这么写,┑( ̄Д  ̄)┍
2017-02-20 13:15
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
或许是我表达有问题,我的意思是这个表达式的值为20,而不是a,我们最后输出的式还是表达式的值。等下,我明白你们的意思了,我前面说的还是错了,跟变量没关系,程序最终输出的是z的值,而不是表达式,z的值只跟第一个表达式有关,而整个式子的值是取最后一个表达式的值,最终输出哪个得看后面的变量。我终于明白了,谢谢解答的各位。
2017-02-20 17:15
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 13楼 rjsp
其实是我理解错了你的意思,的确是表达式的值是20,a值是15
2017-02-20 17:19
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 18楼 纯帅de肥猪
是我表达错误了意思,不过重点不在这,不过我明白问题出在哪了,谢谢。
2017-02-20 17:21
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 14楼 qdcs
其实我倒是没看错题目,但是理解错了,所以跟你说的一样,囧。
2017-02-20 17:24
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 15楼 renkejun1942
恩,其实我纠结的不是这个,不过现在明白了,谢谢。
2017-02-20 17:25
快速回复:求教逗号运算问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017342 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved