achang1212 发表于 2017-2-23 13:57:09

逗号表达式问题?

看图 不明白为什么x=6可以理解 为什么y也等于6   y不是应该等于10 码?例题想告诉我什么   求大家帮我看下 谢谢!

那天麦子 发表于 2017-2-23 14:28:11

因为赋值运算符的优先级大于逗号的优先级

achang1212 发表于 2017-2-23 15:02:55

那天麦子 发表于 2017-2-23 14:28
因为赋值运算符的优先级大于逗号的优先级

你的意思就是 此处没有用到 逗号运算逗号只做分隔符出现的   如果运算了不管优先是否那么结果肯定等于10 对吧 ?

caokaifa 发表于 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了

0mrli0 发表于 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]
查看完整版本: 逗号表达式问题?