4
  1. int i=1,2,3;

  2. int i=(1,2,3);

  3. int i; i=1,2,3;

这些陈述之间有什么区别?我无法找到任何特定的原因。

4

2 回答 2

16
Statement 1 Result : Compile error.

'=' 运算符的优先级高于 ',' 运算符。逗号在这里充当分隔符。编译器创建一个整数变量'i'并用'1'初始化它。编译器无法创建整数变量“2”,因为“2”不是有效的标识符。


Statement 2 Result: i=3

'()' 运算符的优先级高于 '='。因此,首先,评估括号运算符。'()' 运算符从左到右操作。但总是最后分配的结果。


Statement 3: Result: i=1

'=' 运算符的优先级高于 ',' 运算符。所以'i'被'1'初始化。'2' 和 '3' 只是常量表达式。所以没有效果。

于 2013-06-22T14:08:27.090 回答
0

它是逗号运算符

i = a, b, c;            // stores a into i      ... a=5, b=2, c=3, i=5


i = (a, b, c);          // stores c into i      ... a=5, b=2, c=3, i=3

第一行和第二行之间的不同行为是由于逗号运算符的优先级低于赋值。

于 2013-06-22T14:10:08.913 回答