关于在C中使用括号

1 c operators

void main()
int a,b,c;
c=(a,b)
Run Code Online (Sandbox Code Playgroud)

这使c=b同时

c=a,b 
Run Code Online (Sandbox Code Playgroud)

c=a.

上面两个是什么原因?

Bol*_*ock 11

在这一行:

c=(a,b)
Run Code Online (Sandbox Code Playgroud)

括号表示" a,b首先计算表达式,然后将值赋值给" c.在这种情况下,b被赋值,因为它是右手边的表达式a,b.在C中,逗号表达式从左到右计算,整体值是最右边的表达式.

在这一行:

c=a,b
Run Code Online (Sandbox Code Playgroud)

分配首先被评估为整个左侧,即c=a.这是因为等于=运算符优先于逗号,运算符.因此,b根本没有被分配c.它相当于:

(c=a),b
Run Code Online (Sandbox Code Playgroud)