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++ 都不允許重新宣告區域性變數。兩個程式都編譯失敗

更新於: 2021年11月3日

558 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告

© . All rights reserved.