鱼C论坛

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

关于逗号运算符

[复制链接]
发表于 2012-6-23 20:58:05 | 显示全部楼层 |阅读模式
1鱼币
我看教程上的一个例子,
main()
{
   int a=2,b=4,c=6,x,y;
   y=(b+c),(x=a+b);
   printf("y=%d,x=%d\n",y,x);
}
Y的值应该是等于第二个表达式(x=a+b)的值,也就是等于6,可编译出来之后算的Y的第一个表达式内的值,请问这是怎么回事?


图.zip

50.5 KB, 下载次数: 1

这是我的运算结果

最佳答案

查看完整内容

因为逗号的优先级小于赋值运算符。加个括号就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-23 20:58:06 | 显示全部楼层
因为逗号的优先级小于赋值运算符。加个括号就可以了
  1. #include<stdio.h>
  2. int main()
  3. {
  4.    int a=2,b=4,c=6,x,y;
  5.    y=((b+c),(x=a+b));
  6.    printf("y=%d,x=%d\n",y,x);
  7.         return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-23 21:16:28 | 显示全部楼层
编译之后输出的是X,Y的值   并不是表达式的值   若改成
#include<stdio.h>
main()
{
    int a=2,b=4,c=6,x,y,z;
    z=(y=(x=a+b),(b+c));
    printf("y=%d,x=%d,z=%d\n",y,x,z);
}


这样   Z的值是表达式二的值   不知道是否解释正确   给与参考   我也是新手、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-23 22:23:04 | 显示全部楼层

哦,明白了,赋值的优先大于逗号运算符,所以不加括号的话,Y始终等于第一个表达式的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 16:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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