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++ 都不允許重新宣告區域性變數。兩個程式都編譯失敗
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP