Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tại sao các biến toàn cục và biến tĩnh được khởi tạo thành giá trị mặc định của chúng trong C / C ++?

Biến toàn cục và biến tĩnh được khởi tạo thành giá trị mặc định của chúng vì nó nằm trong tiêu chuẩn C hoặc C ++ và có thể tự do gán giá trị bằng 0 tại thời điểm biên dịch. Cả biến tĩnh và biến toàn cục đều hoạt động giống nhau đối với mã đối tượng được tạo. Các biến này được cấp phát trong tệp .bss và tại thời điểm tải, nó sẽ cấp phát bộ nhớ bằng cách nhận các hằng số được phân bổ cho các biến.

Sau đây là một ví dụ về các biến toàn cục và tĩnh.

Ví dụ

 #include  int a; static int b; int main () {int x; tĩnh int y; int z =28; printf ("Giá trị mặc định của biến toàn cục a:% d", a); printf ("\ nGiá trị mặc định của biến tĩnh toàn cục b:% d", b); printf ("\ nGiá trị mặc định của biến cục bộ x:% d", x); printf ("\ nGiá trị mặc định của biến tĩnh cục bộ y:% d", y); printf ("\ n Giá trị của biến cục bộ z:% d", z); trả về 0;} 

Đầu ra

 Giá trị mặc định của biến toàn cục a:0 Giá trị mặc định của biến tĩnh toàn cục b:0 Giá trị mặc định của biến cục bộ x:0 Giá trị mặc định của biến tĩnh cục bộ y:0 Giá trị của biến cục bộ z:28 

Trong chương trình trên, các biến toàn cục được khai báo bên ngoài hàm main () và một trong số chúng là biến tĩnh. Ba biến cục bộ được khai báo và biến z cũng được khởi tạo.

 int a; static int b;… .int x; static int y; int z =28; 

Giá trị mặc định của chúng được in ra.

 printf ("Giá trị mặc định của biến toàn cục a:% d", a); printf ("\ n Giá trị mặc định của biến tĩnh toàn cục b:% d", b); printf ("\ n Giá trị mặc định của cục bộ biến x:% d ", x); printf (" \ n Giá trị mặc định của biến tĩnh cục bộ y:% d ", y); printf (" \ n Giá trị của biến cục bộ z:% d ", z);