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

Các kiểu dữ liệu nguyên thủy chưa khởi tạo trong C/C++


Trong phần này xem khi khai báo biến chưa khởi tạo, chúng mang giá trị gì trong C/C++. Đôi khi ta tưởng trình biên dịch gán 0 cho int, 0.0 cho float... nhưng kiểu char thì sao? Xem qua triển khai và biên dịch bằng các trình biên dịch khác nhau.

Ví dụ (C++)

#include <iostream>
using namespace std;
int main() {
    char char_var;
    float float_var;
    int int_var;
    double double_var;
    long long_var;
    cout << char_var << endl;
    cout << float_var << endl;
    cout << int_var << endl;
    cout << double_var << endl;
    cout << long_var << endl;
}

Kết quả (Biên dịch trên Cpp.sh)

0
0
0
0

Kết quả (Biên dịch trên Online GDB)

5.88054e-39
0
6.95297e-310
0

Kết quả (Hệ thống cục bộ)

9.73438e-039
4309744
1.15685e-306
-53505136

Tại sao trình biên dịch C/C++ không khởi tạo biến với giá trị mặc định? Câu trả lời đơn giản: chi phí khởi tạo biến stack đắt đỏ, làm chậm tốc độ thực thi, do đó biến có thể chứa giá trị bất định. Vì vậy, việc khởi tạo biến nguyên thủy trước khi dùng là thói quen tốt.