| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:刚学C的,遇到逗号表达式的一个问题。
只看楼主 加入收藏
大城故事
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-29
收藏
 问题点数:0 回复次数:5 
刚学C的,遇到逗号表达式的一个问题。
逗号表达式不是说, 结果是最后一个表达式的值吗。。
我这个 式子, 他都是表达式1的值。。。

#include <stdio.h>

void main()
{
    int a=2, b=4, c=6, x, y;
    y=(x=b+c),(a+b);
    printf("y=%d, x=%d\n", y, x);
}

我用的是VC++。  

刚学C ,打不出哪里错了。。
搜索更多相关主题的帖子: include 表达式 
2013-10-30 00:00
菜鸟ぃ求助
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-10-28
收藏
得分:0 
逗号运算符是优先级最低的,所以y=(x=b+c),(a+b);中的(a+b)是没用的

生命不息,战斗不止!!
2013-10-30 00:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
y=(x=b+c),(a+b); 这个表达式的值确实是 (a+b) 的值
y=(x=b+c),(a+b) 等同于 (y=(x=b+c)),(a+b),而非 y = ((x=b+c),(a+b))
2013-10-30 08:41
hehongwei152
Rank: 2
来 自:珠海
等 级:论坛游民
帖 子:15
专家分:31
注 册:2012-9-28
收藏
得分:0 
程序代码:
#include <stdio.h>

void main()
{
    int a=2, b=4, c=6, x, y;
    y=(x=b+c),(a+b);
    printf("y=%d, x=%d, ((x=b+c),(a+b))=%d\n", y, x,((x=b+c),(a+b)));
}


输出的是 10 10 6     参照 C Primer Plus 133页:
houseprice=249,500;  houseprice=249是左子表达式,而500是右子表达式。因此整个逗号表达式的值就是右边表达式的值,并且
左边的子语句把变量houseprice赋值为249.

houseprice=(249,500); 把houseprice赋值为500,因此该值是右子表达式的值。

return 0;
2013-10-30 09:28
yshx88
Rank: 2
等 级:论坛游民
帖 子:57
专家分:68
注 册:2013-10-20
收藏
得分:0 
#include <stdio.h>

void main()
{
    int a=2, b=4, c=6, x, y;
    y=b+c,x=a+b;
    printf("y=%d, x=%d\n", y, x);
}
这样也可以啊,为什么非要把想想x,y放在一起

我的世界每天开出一朵花
2013-10-30 12:34
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:0 
,号表达式结合方向自作只运算级别15级
赋值运算符结合方向自右至左运算级别14级

。。。。。。。。。。。
2013-10-30 14:18
快速回复:刚学C的,遇到逗号表达式的一个问题。
数据加载中...
 
   



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

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