请考虑以下两个程序:
// Program 1
int main()
{
int x;
int x = 5;
printf("%d", x);
return 0;
}
在C中的输出:
redeclaration of ‘x’ with no linkage
// Program 2
int x;
int x = 5;
int main()
{
printf("%d", x);
return 0;
}
在C中的输出:
5
在C语言中,第一个程序编译失败,但是第二个程序运行正常。在C++中,两个程序都无法编译。
当第一次声明未初始化全局变量时,C允许再次声明全局变量。
下面的程序在C语言中都失败了,因为全局变量是在第一个声明本身中初始化的。
int x = 5;
int x = 10;
int main()
{
printf("%d", x);
return 0;
}
输出:
error: redefinition of ‘x’
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。