logo

  • Kiến Thức
  • Thể Thao - Bóng Đá
No Result
View All Result
logo
No Result
View All Result
Trang chủ Kiến Thức code không nhập được số khi chạy trên dev

Code Không Nhập Được Số Khi Chạy Trên Dev

by Admin _ April 14, 2022

Trong cuộc thi CodeWar hay khi giải 1 số bài tập trên dhn.edu.vn (đa phần là C++), có nhiều bạn thường hỏi tôi rằng tại sao kết quả chạy chương trình của các bạn trên máy tính của các bạn thì ra kết quả khác với trên hệ thống, hoặc cùng một code nhưng mỗi lúc chạy lại ra 1 kết quả khác nhau. Có nhiều lí do gây ra việc đó, nhưng phần lớn khi xem xét code của các bạn, tôi nhận thấy rằng lỗi đó liên quan tới việc “không khởi tạo biến”, hay tiếng anh gọi làuninitialized variable

Không khởi tạo biến là gì?

Hãy xem xét đoạn code sau đây:

int sum(int n){ int a; for (int i=0; i

Dễ dàng để nhận ra đoạn code trên dùng để tính tổng các số từ 0 tới n. Tuy nhiên khi bạn chạy ở nhiều máy khác nhau hay chạy ở trên dhn.edu.vn với số lần đủ lớn, bạn sẽ thấy kết quả sẽ ko phải luôn luôn giống nhau!

Lỗi xảy ra chính ở việc bạn không khởi tạo giá trị cho biến số a. Theo đó, mỗi một lần chạy, biến a sẽ được hệ điều hành gán cho 1 giá trị ngẫu nhiên. Và nếu giá trị ngẫu nhiên đó không bằng 0, thì chương trình này chắc chắn là chạy sai rồi, đúng không?

Có rất nhiều bạn nói với tôi rằng, khi khởi tạo 1 biến số thì biến đó sẽ nhận 1 giá trị mặc định. Xin thừa rằng, điều ấy phụ thuộc khá nhiều vào trình biên dịch hoặc cờ biên dịch (compiler flag). Có những trình biên dịch tự động cấp phát và khởi tạo biến số nguyên bằng 0, có những trình biên dịch tự động cấp phát và khởi tạo cả một mảng số nguyên gồm những số 0, nhưng có những trình biên dịch mặc kệ, việc khởi tạo hoàn toàn nằm trong tay bạn.Bạn đang xem: Tại sao c++ không chạy được

Đặc biệt, trong 1 số đoạn mã liên quan tới mảng hay ma trận, nếu sử dụng mảng hay ma trận mà không khởi tạo giá trị cho mảng kiểu nhưbool arrayhayint arraythì tỉ lệ gặp lỗi của bạn sẽ cao hơn bình thường.

Bạn đang xem: Code không nhập được số khi chạy trên dev

Tại sao C/C++ thường bị lỗi này?

Với Java hay C#, nếu bạn gõ thử đoạn code tương tự, bạn sẽ bị gặp báo lỗi:variable … might not have been initialized(Java) hayUse of unassigned local variable ‘…’(C#) và buộc phải sửa lỗi này.

Tại sao lại có chuyện lúc thì không warning, lúc thì warning và lúc thì báo lỗi, bạn hãy đọc và hiểu thêm về cờ biên dịch ở phía bên dưới nhé

Cờ biên dịch:

Cờ biên dịch được hiểu là những tuỳ chọn, tham số khi trình biên dịch biên dịch code của các bạn

Xét đoạn mã sau:

#include using namespace std;int main() { int a; cout

Bây giờ hãy thử biên dịch đoạn code trên với 2 câu lệnh khác nhau như hình dưới đây:


*

Sự khác nhau khi biên dịch trong trường hợp có và không có cờ "-Wall"

Như bạn thấy rồi đấy, trong trường hợp có cờ "-Wall", trình biên dịch sẽ bật cảnh báo về việc không khởi tạo biến. Thông thường, trên máy bạn hay IDE của bạn sẽ không bật cờ này, đó là lí do bạn ko phát hiện ra được lỗi không khởi tạo biến của mình.

Xem thêm: Ngành Quản Trị Kinh Doanh Học Quản Trị Kinh Doanh Ra Làm Nghề Gì ?


*

Tiếp theo hãy xem sự kết hợp của hai cờ "-Wall" và "-Werror" khi biên dịch đoạn mã trên. Bạn sẽ thấy bây giờ trình biên dịch báo lỗi chứ không còn là cảnh báo nữa.

Chi tiết các cờ biên dịch bạn có thể tham khảo ở link sau:https://caiorss.github.io/C-Cpp-Notes/compiler-flags-options.html

Kết luận

Giờ thì các bạn có thể hiểu sơ sơ về lỗi không khởi tạo biến và tác hại của nó rồi chứ.

Lỗi này không chỉ gặp với C++, mà có thể 1 số ngôn ngữ khác cũng có thể gặp (với 1 số ngôn ngữ mà mình chưa biết). Do đó, hãy luôn rèn cho mình thói quen khởi tạo 1 giá trị mặc định khi bạn khai báo một biến hay một đối tượng nhé.

ShareTweet Linkedin Pinterest
Previous Post

Tại sao bị tê tay

Next Post

Tại sao đèn huỳnh quang có hiện tượng nhấp nháy

CÙNG CHUYÊN MỤC

đọc kinh tối trước khi đi ngủ

Đọc kinh tối trước khi đi ngủ

13/10/2021
tại sao không dùng được drop cap

Tại sao không dùng được drop cap

18/10/2021
tại sao thiền sư thích nhất hạnh bị cấm về việt nam

Tại sao thiền sư thích nhất hạnh bị cấm về việt nam

28/12/2021
bướm của con gái như thế nào

Bướm của con gái như thế nào

10/10/2021
tại sao quảng cáo facebook không hiệu quả

Tại sao quảng cáo facebook không hiệu quả

15/04/2022
tại sao tăng triglyceride gây viêm tụy cấp

Tại sao tăng triglyceride gây viêm tụy cấp

15/04/2022
trên đời này có ma thật không?

Trên đời này có ma thật không?

15/04/2022
tại sao tủ lạnh kêu to

Tại sao tủ lạnh kêu to

15/04/2022

Newsletter

The most important automotive news and events of the day

We won't spam you. Pinky swear.

Chuyên Mục

  • Kiến Thức
  • Thể Thao - Bóng Đá

News Post

  • Học quản trị kinh doanh ra làm nghề gì

About

Chúng tôi tạo ra trang web nhằm mục đích mang lại kiến thức bổ ích cho cộng đồng, các bài viết được sưu tầm từ nhiều nguồn trên internet giúp mang lại kiến thức khách quan dành cho bạn

©2023 dhn.edu.vn - Website WordPress vì mục đích cộng đồng

Liên Hệ - Giới Thiệu - Nội Quy - Bảo Mật

No Result
View All Result
  • Trang chủ
  • Chuyên mục
    • Kiến Thức
    • Thể Thao - Bóng Đá
  • Lưu trữ
  • Liên hệ

© 2023 dhn.edu.vn - Website WordPress vì mục đích cộng đồng.

Liên Hệ - Giới Thiệu - Nội Quy - Bảo Mật