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
Bài liên quan
Bởi vì đó là tiêu chuẩn của nó.
global
vớistatis
khi khai báo nó sẽ là 0Chi tiết hơn thì https://stackoverflow.com/questions/14049777/why-are-global-variables-always-initialized-to-0-but-not-local-variables
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.
anh ơi flag là cái gì vậy ạ ?
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.
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é.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