重新声明全局变量的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程序 的全部内容, 来源链接: utcz.com/z/345701.html

回到顶部