在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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句