我有一个C代码,它使用简单的逗号运算符
main()
{
int a= 1,2,3;
printf("%d",a);
}
现在当我编译得到一个错误,而同一个程序很少修改运行正常
main()
{
int a;
a= 1,2,3;
printf("%d",a);
}
为什么会这样?
答案 0 :(得分:6)
在第一种情况下,引发错误是因为如果假装声明多个变量或分配多个值,编译器无法区分。
int a= 1,2,3;
您的意思是int a; a = 1, 2, 3
还是int a = 1, int 2, int 3
?编译器无法从上下文中判断出来(即使 2 或 3 不是合法的变量名称)。
这种歧义在第二种情况下不存在,因此没有错误(但无论如何都会发出警告)。
PS:它是int main()
而不是void main()
。
答案 1 :(得分:0)
使用变量初始化表单时,逗号不会作为同一个运算符。它是一种特殊的简写形式,用于在同一行上声明多个变量,因此需要自己的语法。
因此,在语句int a = 1, 2, 3
中,逗号实际上的解释方式与语句a = 1, 2, 3
中的解释不同。
前者是语法错误,因为它不符合多变量声明表单。第二个是有效的语法,但正如其他人所指出的那样是毫无意义的,因为语句2;
和3;
在语法上是正确的,什么都不做。