鱼C论坛

 找回密码
 立即注册
查看: 3288|回复: 3

关于逗号运算符的优先级

[复制链接]
发表于 2012-2-20 21:38:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include        <stdio.h>
void main()
{
        int a=2,b=4,c=6,x,y;
        y=(x=a+b),(b+c);
        printf("%d\n",y);
}
输出结果:
6
这个结果为什么是6,  优先级怎么看
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-20 22:02:18 | 显示全部楼层
逗号运算符的运算优先级低于赋值运算符,因此
先进行y=(x=a+b),再进行(b+c)
#include        <stdio.h>
void main()
{
        int a=2,b=4,c=6,x,y;
                int s;
        y=(x=a+b),(b+c);
                s=((x=a+b),(b+c));
        printf("x=%d\ny=%d\ns=%d\n",x,y,s);
}
运行结果如下:
x=6
y=6
s=10
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-20 23:51:19 | 显示全部楼层
y=(x=a+b),(b+c);


这句话是把a+b赋值给X,再把X赋值给Y,赋值运算符优先于逗号运算符,所以Y得值为6

y=(x=a+b,b+c);

如果这样Y=10
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-21 01:00:08 | 显示全部楼层
本帖最后由 freecoding 于 2012-2-21 01:00 编辑

逗号运算符是所有运算符中级别最低的。
举个例子:
a=3*5,a*4
先求解a=3*5;
赋值后a的值为15;
然后求解a*4,得60;整个逗号表达式的值为60。

你的题:y=(x=a+b),(b+c);
             printf("%d\n",y);

要输出y,y=(x=a+b),和(b+c)没有关系。



小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-11 11:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表