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)