Connor666 发表于 2022-5-5 17:10:02

这是扎回事呢?

#include <stdio.h>

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


答案怎么X,Y都是6,而不是x6,y10.

isdkz 发表于 2022-5-5 17:12:45

y = (x = a + b),(b + c); 就相当于

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

你应该换成

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

风车呼呼呼 发表于 2022-5-5 17:22:25

再加个括号就是x6,y10了。逗号运算符的优先级比赋值运算符低,不加括号就会被拆成y = (x = a + b);b + c;
y = ((x = a + b),(b + c));
页: [1]
查看完整版本: 这是扎回事呢?