鱼C论坛

 找回密码
 立即注册
查看: 4469|回复: 7

问一下C语言逗号表达式问题

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

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

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

x
#include <stdio.h>

int main(void)

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

问下大牛 d应该是等于9吧为啥编译器变出来等于6呢  请帮忙解答一下 不明白 谢谢:loveliness::loveliness::loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-7 23:08:17 | 显示全部楼层
赋值运算符的优先级高于逗号表达式的优先级
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-8 00:01:40 | 显示全部楼层
不明白 。等待解答
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-8 09:35:05 | 显示全部楼层
如果变成这样加个括号 y=((x=a+b),(c+b),d);它就是先进行括号里面的逗号运算,即从左到右,然后把值给y,这时y就是等于9。但如果没有 y=(x=a+b) , (c+b) , d;只是这样,那么y就等于x,即等于6。
(printf("y=%d, x=%d, d=%d\n",d, x, y);d的值对应于y,楼主不知是不是看错成d对应d。)


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-8 12:15:35 | 显示全部楼层
赞同楼上         
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-8 17:37:58 | 显示全部楼层
就是这个意思 前面的格式控制吧 原样输出而已  楼主混淆了 ,也可以说是这个程序本身没写好 有歧义
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-8 18:44:20 | 显示全部楼层
谢谢大家明白了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-8 21:51:03 | 显示全部楼层
这谁出的题,好贱=。=
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-2-10 22:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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