c - 为什么下面的 C 代码在编译时失败

标签 c

我有一个 C 代码,它使用简单的逗号运算符

main()
{
int a= 1,2,3;
printf("%d",a);
}

现在当我编译时出现错误,而同一个程序稍加修改就可以正常运行

main()
{
int a;
    a= 1,2,3;
    printf("%d",a);
}

为什么会这样?

最佳答案

在第一种情况下,如果您假装声明多个变量或分配多个值,编译器将无法区分,因此会引发错误。

int a= 1,2,3; 

你是说 int a; a = 1, 2, 3 还是 int a = 1, int 2, int 3?编译器无法从上下文中分辨出来(即使 23 不是合法的变量名)。

这种歧义在第二种情况下不存在,因此没有错误(但无论如何都会发出警告)。

PS:是int main()不是 void main()

关于c - 为什么下面的 C 代码在编译时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515351/

相关文章:

c - C 是否具有函数参数名称的 __func__ 功能?

c - 如何以编程方式调整 ext4 分区的大小?

java - C中的 "nonmodifiable"和其他编程语言中的 "immutable"意思一样吗?

python - Swig C 模块的子集,同时忽略具有其他依赖项的模块的其余部分

c - 分段故障核心转储错误

c - 如何从 C 中的给定字符串中删除\n 或\t?

在C中将二进制字符串转换为int

Codelite 找不到流

c - 使字符串的行数等于变量的值

C- - 如何对目录中的所有文件执行函数?