鱼C论坛

 找回密码
 立即注册
查看: 2149|回复: 4

[已解决]逗号表达式问题?

[复制链接]
发表于 2017-2-23 13:57:09 | 显示全部楼层 |阅读模式

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

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

x
看图 不明白为什么  x=6可以理解 为什么y也等于6   y不是应该等于10 码?  例题想告诉我什么   求大家帮我看下 谢谢!
最佳答案
2017-2-23 16:09:54
多写,体会一下
#include <stdio.h>

int main()
{
    int x1, x2, y1, y2, z2, z1, a = 2, b = 4, c = 6;
    x1 = (a+b, b+c);
    x2 = a+b, b+c;
 
    y1 = (z1=a+b, b+c);
    y2 = (a+b , z2=b+c);
    printf("x1 = %d, x2 = %d\ny1 = %d, y2 = %d\nz1 = %d, z2 = %d", x1, x2, y1, y2, z1, z2);
}

代码

代码

输出结果

输出结果

例题

例题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-23 14:28:11 | 显示全部楼层

回帖奖励 +10 鱼币

因为赋值运算符的优先级大于逗号的优先级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-23 15:02:55 | 显示全部楼层
那天麦子 发表于 2017-2-23 14:28
因为赋值运算符的优先级大于逗号的优先级

你的意思就是 此处没有用到 逗号运算  逗号只做分隔符出现的     如果运算了不管优先是否那么结果肯定等于10 对吧 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 16:01:57 | 显示全部楼层
上面的是逗号运算符优先级低 赋值运算符,所以先算x=a+b=6赋值给y=6,之后运算b+c=10(结果没有保存),所以x=6,y=6
如果y=((x=a+b),b+c),因为括号优先级高于 赋值 运算符,那么输出的x=6.y=10了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 16:09:54 | 显示全部楼层    本楼为最佳答案   
多写,体会一下
#include <stdio.h>

int main()
{
    int x1, x2, y1, y2, z2, z1, a = 2, b = 4, c = 6;
    x1 = (a+b, b+c);
    x2 = a+b, b+c;
 
    y1 = (z1=a+b, b+c);
    y2 = (a+b , z2=b+c);
    printf("x1 = %d, x2 = %d\ny1 = %d, y2 = %d\nz1 = %d, z2 = %d", x1, x2, y1, y2, z1, z2);
}
1.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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