为什么两种情况下的不同行为是第一 int i = 1,2,3; 和第二。 int i; i = 1,2,3;
使用GCC编译器,在C程序中跟随两个运算符的情况,观察不同的行为。
1。
int i = 1,2,3; printf("%d",i); // this will give compile time error
和,
2。
int i; i = 1,2,3; printf("%d",i); // Its output will be 1.
在第一种情况下,编译器给出了错误“错误:期望标识符或’(’数字常量之前’。并且在第二种情况下,没有错误,输出是1.在这两种情况下,任何人都能解释编译器行为吗?编译器如何?解释这两个陈述?
提前感谢您的意见。
-
在第一种情况下,逗号分隔几个相同类型的变量的声明和初始化 :
int i = 1, j = 2, k = 3;
您可以添加括号来告诉编译器它是一个表达式。
int i = (1, 2, 3);
如果你将它们组合在一起,就更容易理解为什么逗号在没有括号的情况下是不明确的:
int i = (1, 2, 3), j = 4, k = 5;
-
在第二种情况下,逗号分隔3个表达式。
(i = 1), 2, 3