C语言逗号运算符的问题

2019-07-16 04:56发布

本帖最后由 godiszc 于 2012-8-9 21:43 编辑

书上表达的意思是逗号表达式
表达式1,表达式2,以表达式2的值作为整个逗号表达式的值。
#include<stdio.h>
main()
{
int a=2,b=4,c=6,x,y;
y=(b+c),(x=a+b);
printf("y=%d,x=%d",y,x);
        
}
但是我通过这样的程序验证时候发现 1.jpg

而改变程序变为
#include<stdio.h>main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);

}
结果为 2.jpg

也就是说逗号表达式是以表达式1的值为结果的。在此想请各位大牛确认下是不是这样的?
(原来是自己理解有误)



        


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
zyfriend2004
1楼-- · 2019-07-16 05:16
 精彩回答 2  元偷偷看……
zhlndsq-484
2楼-- · 2019-07-16 07:46
godiszc
3楼-- · 2019-07-16 10:14
zyfriend2004 发表于 2012-8-9 17:00
原因很简单,因为逗号运算符的优先级没有赋值运算符高

??
jasonchao1120
4楼-- · 2019-07-16 13:27
y=(b+c),(x=a+b); 先计算的是y=b+c和x=a+b、然后才是逗号运算符。。

给你说个程序你就明白了、
int a=2,b=3,y;
y=a+b;
printf("%d,%d",y,(a,b));

运行结果为5,3
godiszc
5楼-- · 2019-07-16 16:22
godiszc 发表于 2012-8-9 19:05
??

我才发现自己帖子里这两个程序敲的不对,没可比性。谢谢你的回答啊
云深无迹
6楼-- · 2019-07-16 20:27
 精彩回答 2  元偷偷看……

一周热门 更多>