Câu hỏi thường gặp: giá trị của kiểu dữ liệu nguyên thủy chưa khởi tạo trong C/C++ là gì? Câu trả lời khác nhau tùy hệ thống. Có thể tưởng trình biên dịch gán 0: int = 0, float = 0.0, nhưng kiểu ký tự thì sao?
Ví dụ
#include <iostream>
using namespace std;
int main() {
char a;
float b;
int c;
double d;
long e;
cout << a << "\n";
cout << b << "\n";
cout << c << "\n";
cout << d << "\n";
cout << e << "\n";
return 0;
}
Kết quả (Windows)
1.4013e-045 0 2.91499e-322 0
Kết quả (Linux)
0 0 0 0
Tại sao C/C++ không gán mặc định? Chi phí khởi tạo biến stack tốn kém, làm chậm thực thi. Biến có thể chứa giá trị rác. Cần khởi tạo trước khi dùng.