我有一个C代码,它使用简单的逗号运算符
main()
{
int a= 1,2,3;
printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我编译得到一个错误,而相同的程序几乎没有修改运行良好
main()
{
int a;
a= 1,2,3;
printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
在第一种情况下,引发错误是因为如果假装声明多个变量或分配多个值,编译器就无法区分.
int a= 1,2,3;
Run Code Online (Sandbox Code Playgroud)
你是说int a; a = 1, 2, 3,还是int a = 1, int 2, int 3?编译器无法从上下文中判断出来(即使2或3不是合法的变量名).
在第二种情况下不存在这种模糊性,因此没有错误(但无论如何都发出了警告).
PS:事实int main()并非如此void main().