int i=1,2,3;
int i=(1,2,3);
int i; i=1,2,3;
这些语句有什么区别?我无法找到任何特定的原因。
这三个语句中的逗号具有不同的含义。第一个语句中,逗号是用来分隔变量初始化列表中的值的。这意味着变量i将被初始化为1,然后2和3将被忽略。第二个语句中,括号内使用的逗号是一个运算符,它在计算时返回最后一个值,因此变量i将被初始化为3。
第三个语句中,逗号被用作顺序运算符,它会按顺序执行所有操作,但只返回最后一个操作的结果,因此变量i将被赋值为3。
int i=1,2,3;
int i=(1,2,3);
int i; i=1,2,3;
这些语句有什么区别?我无法找到任何特定的原因。
这三个语句中的逗号具有不同的含义。第一个语句中,逗号是用来分隔变量初始化列表中的值的。这意味着变量i将被初始化为1,然后2和3将被忽略。Statement 1 Result : Compile error.
'='运算符的优先级高于','运算符。逗号在这里作为分隔符。编译器创建一个整数变量'i'并将其初始化为'1'。编译器无法创建名为'2'的整数变量,因为'2'不是有效的标识符。Statement 2 Result: i=3
'()' 运算符的优先级高于 '='。所以,首先计算括号运算符。'()' 运算符从左到右进行操作,但最终得到的结果总是被赋值。
'()' 运算符的优先级高于 '='。所以,首先计算括号运算符。'()' 运算符从左到右进行操作,但最终得到的结果总是被赋值。
Statement 3: Result: i=1
'=' 运算符的优先级高于 ',' 运算符。因此 'i' 被初始化为 '1'。'2' 和 '3' 只是常量表达式,所以没有影响。这是逗号运算符
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
第一行和第二行之间的不同行为是由于逗号运算符比赋值运算符的优先级低。