Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C minh họa khai báo lại biến toàn cục

Chúng ta sẽ hiểu cách C và C++ hành xử khác nhau khi khai báo lại biến toàn cục không khởi tạo, khai báo lại biến toàn cục có khởi tạo, khai báo lại và khởi tạo hai lần. Cũng sẽ lặp lại các tổ hợp trên với biến cục bộ.

1. A) Chương trình C: Khai báo lại biến toàn cục không khởi tạo

#include <stdio.h>
int var;
int var;
int main(){
    printf("Var = %d",var);
    return 0;
}

Kết quả

Var = 0

B) Chương trình C++: Khai báo lại biến toàn cục không khởi tạo

#include <iostream>
using namespace std;
int var;
int var;
int main(){
    cout<<"Var = "<<var;
    return 0;
}

Kết quả

Lỗi biên dịch: int var; main.cpp:3:5: note: 'int var' previously declared here

Kết quả:- C cho phép khai báo lại biến toàn cục không khởi tạo. Giá trị vẫn là 0. C++ báo lỗi biên dịch biến bị khai báo lại.

2. A) Chương trình C: Khai báo lại biến cục bộ không khởi tạo

#include <stdio.h>
#include <stdio.h>
int main(){
    int var;
    int var;
    printf("Var = %d",var);
    return 0;
}

Kết quả

error: redeclaration of 'var' with no linkage

B) Chương trình C++: Khai báo lại biến cục bộ không khởi tạo

#include <iostream>
using namespace std;
int main(){
    int var;
    int var;
    cout<<"Var = "<<var;
    return 0;
}

Kết quả

error: redeclaration of 'int var'

Kết quả:- Cả C và C++ đều không cho phép khai báo lại biến cục bộ không khởi tạo. Cả hai chương trình đều thất bại khi biên dịch.

3. A) Chương trình C: Khai báo lại biến toàn cục có khởi tạo

#include <stdio.h>
int main(){
    int var;
    int var=10;
    printf("Var = %d",var);
    return 0;
}

Kết quả

Var = 10

B) Chương trình C++: Khai báo lại biến toàn cục có khởi tạo

#include <iostream>
using namespace std;
int var;
int var=10;
int main(){
    cout<<"Var = "<<var;
    return 0;
}

Kết quả

main.cpp:7:9: error: redeclaration of 'int var' int var;

Kết quả:- C cho phép khai báo lại biến toàn cục nếu nó chưa khởi tạo. Chương trình C++ thất bại khi biên dịch.

4. A) Chương trình C: Khai báo lại biến toàn cục có khởi tạo

#include <stdio.h>
int var;
int var=10;
int main(){
    printf("Var = %d",var);
    return 0;
}

Kết quả

error: redeclaration of 'var' with no linkage

B) Chương trình C++: Khai báo lại biến cục bộ có khởi tạo

#include <iostream>
using namespace std;
int main(){
    int var;
    int var=10;
    cout<<"Var = "<<var;
    return 0;
}

Kết quả

error: redeclaration of 'int var

Kết quả:- Cả C và C++ đều không cho phép khai báo lại biến cục bộ ngay cả khi chưa khởi tạo. Cả hai chương trình đều thất bại khi biên dịch.