14

请解释一下这个程序的输出:

int main()
{    
    int a,b,c,d;  
    a=10;  
    b=20;  
    c=a,b;  
    d=(a,b);  
    printf("\nC= %d",c);  
    printf("\nD= %d",d);  
}

我得到的输出是:

C= 10  
D= 20

我的疑问是“,”运算符在这里做什么?
我使用代码块编译并运行程序。

4

3 回答 3

23

,运算符计算一系列表达式并返回最后一个的值。

c=a,b是一样的(c=a),b。这就是为什么 c 是 10

c=(a,b)会将 的结果(a,b即 20)分配给c

正如 Mike 在评论中指出的那样,赋值 ( =) 的优先级高于逗号

于 2013-02-16T14:49:22.060 回答
11

好吧,这是关于运算符优先级的:

c=a,b

相当于

(c=a),b

关键是,“,”运算符将返回第二个值。

因此

c=a,b

将 a 分配给 c 并返回 b

d=(a,b) 

返回 b 并将其分配给 d

于 2013-02-16T14:51:17.473 回答
4

逗号运算符计算其所有操作数,然后得出最后一个表达式的值。

于 2013-02-16T14:49:07.613 回答