Vấn đề
Khai báo biến int và float mà không khởi tạo, sau đó in giá trị. Điều gì xảy ra?
Giải thích
- Biến khai báo mà không khởi tạo sẽ chứa giá trị rác (garbage) hoặc 0.
- Khi khai báo, ô nhớ được cấp phát. Khởi tạo mới ghi giá trị vào ô nhớ đó.
- Nếu không khởi tạo, ô nhớ giữ giá trị cũ (rác) hoặc được khởi tạo 0 tùy trình biên dịch/môi trường.
- In ra sẽ cho 0 hoặc giá trị rác ngẫu nhiên.
Chương trình
#include <stdio.h>
int main() {
float a, b, c;
int x, y, z;
printf("Gia tri a: %f\n", a);
printf("Gia tri b: %f\n", b);
printf("Gia tri c: %f\n", c);
printf("Gia tri x: %d\n", x);
printf("Gia tri y: %d\n", y);
printf("Gia tri z: %d\n", z);
return 0;
}
Kết quả (ví dụ)
Gia tri a: 0.000000 Gia tri b: 0.000000 Gia tri c: 0.000000 Gia tri x: 1512368 Gia tri y: 0 Gia tri z: 27
Lưu ý: Kết quả khác nhau tùy máy, trình biên dịch, lần chạy.