您好,欢迎访问一九零五行业门户网

C程序中全局变量的重新声明

我们将了解在不初始化的情况下重新声明全局变量、通过初始化重新声明全局变量、重新声明全局变量并初始化两次时,c 和 c++ 的行为有何不同。另外,我们将使用局部变量重复上述组合。
1. a) c 程序:重新声明全局变量而不进行初始化#include <stdio.h>int var;int var;int main(){ printf("var = %d",var); return 0;}
输出var = 0
b) c++ 程序:重新声明全局变量而不进行初始化#include <iostream>using namespace std;int var;int var;int main(){ cout<<"var = "<<var; return 0;}
输出compilation error: int var;main.cpp:3:5: note: ‘int var’ previously declared here
结果:- c 允许重新声明全局变量而无需初始化。值仍为 0。c++ 给出编译错误,表明变量被重新声明。
2. a) c 程序:重新声明局部变量而不进行初始化#include <stdio.h>#include <stdio.h>int main(){ int var; int var; printf("var = %d",var); return 0;}
输出error: redeclaration of ‘var’ with no linkage

b) c++ 程序:重新声明局部变量而不进行初始化#include <iostream>using namespace std;int main(){ int var; int var; cout<<"var = "<<var; return 0;}
输出error: redeclaration of ‘int var’
结果:- c 和 c++ 都不允许在未完成初始化的情况下重新声明局部变量。两个程序都编译失败。
3. a) c 程序:重新声明全局变量并进行初始化#include <stdio.h>int main(){ int var; int var=10; printf("var = %d",var); return 0;}
输出var = 10
b) c++ 程序:通过初始化重新声明全局变量#include <iostream>using namespace std;int var;int var=10;int main(){ cout<<"var = "<<var; return 0;}
输出main.cpp:7:9: error: redeclaration of ‘int var’int var;
结果:-c 允许重新声明未初始化的全局变量。 c++程序编译失败。
4. a) c 程序:重新声明全局变量并进行初始化#include <stdio.h>int var;int var=10;int main(){ printf("var = %d",var); return 0;}
输出error: redeclaration of ‘var’ with no linkage

b) c++ 程序:通过初始化重新声明局部变量#include <iostream>using namespace std;int main(){ int var; int var=10; cout<<"var = "<<var; return 0;}
输出error: redeclaration of ‘int var
结果:-c 和 c++ 都不允许重新声明局部变量,即使它未初始化。两个程序都编译失败
以上就是c程序中全局变量的重新声明的详细内容。
其它类似信息

推荐信息