01/10/2018, 10:01

Tại sao biến toàn cục lại có giá trị mặc định bằng 0 khi truy xuất?

em có google ( https://stackoverflow.com/questions/2091499/why-are-global-and-static-variables-initialized-to-their-default-values ) thì họ giải thích khó hiểu quá, mong các anh / chị giải thích dễ hiểu giúp em với ! em xin cảm ơn

Henry viết 12:10 ngày 01/10/2018

Bởi vì đó là tiêu chuẩn của nó. global với statis khi khai báo nó sẽ là 0
Chi tiết hơn thì https://stackoverflow.com/questions/14049777/why-are-global-variables-always-initialized-to-0-but-not-local-variables

HK boy viết 12:01 ngày 01/10/2018

Giá trị của biến toàn cục phụ thuộc vào flag của trình dịch.
Nếu như flag trình dịch là -o thì biến toàn cục được khởi tạo bằng 0.
Nếu như flag trình dịch là -o2 thì biến toàn cục được khởi tạo bằng giá trị rác.

Trong code kia của bạn, biến a của bạn chưa được khởi tạo nên giá trị của nó bằng 0.

Nguyen Kien viết 12:04 ngày 01/10/2018

anh ơi flag là cái gì vậy ạ ?

Trần Hoàn viết 12:08 ngày 01/10/2018

Theo như cái link bạn @graktung đưa thì biến toàn cục được khởi tạo tại compile time nên luôn có giá trị mặc định, còn biến cục bộ thì không được khởi tạo, nếu lập trình viên yêu cầu khởi tạo thì là khởi tạo tại runtime nên không có giá trị mặc định mà tuỳ theo ô nhớ mới được cấp.

HK boy viết 12:13 ngày 01/10/2018

Tạm thời bạn chưa cần quan tâm lắm =)) Nếu bạn muốn tìm hiểu thì bạn search compiler flag c++ nhé.

rogp10 viết 12:17 ngày 01/10/2018

Mình thấy thuyết phục nhất là ở chỗ global với static chỉ khởi tạo 1 lần do nó tồn tại suốt thời gian chạy, còn biến cục bộ nếu muốn khởi tạo thì sẽ phải khởi tạo rất nhiều lần

Bài liên quan
0