Computer >> 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 được khởi tạo trong C / C ++

Một trong những câu hỏi thường gặp nhất là giá trị của một số giá trị dữ liệu nguyên thủy chưa được khởi tạo trong C hoặc C ++ là gì? Vâng, câu trả lời sẽ khác nhau trong các hệ thống khác nhau. Chúng ta có thể giả sử trình biên dịch sẽ gán 0 vào các biến. Nó có thể được thực hiện đối với số nguyên là 0, đối với float 0.0, nhưng điều gì sẽ là đối với dữ liệu kiểu ký tự?

Ví dụ

#include <iostream>
using namespace std;
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";
}

Đầu ra (Trên Windows Compiler)

1.4013e-045
0
2.91499e-322
0

Đầu ra (Trên trình biên dịch Linux)

0
0
0
0

Vì vậy, bây giờ câu hỏi đặt ra, tại sao C hoặc C ++ không gán một số giá trị mặc định cho các biến? Câu trả lời là, chi phí khởi tạo các biến ngăn xếp rất tốn kém. Nó cũng cản trở tốc độ thực thi. Vì vậy, các biến này có thể chứa một số giá trị trung gian. Vì vậy, chúng ta cần khởi tạo các giá trị kiểu dữ liệu ban đầu trước khi sử dụng nó.