Vs 2010 + Dev C++ Không Chạy Được Trên Các Bản Của Win 8, Dev C++ Không Chạy Được Trên Các Bản Của Win 8

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

Mục lục bài viết

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 ucozfree.com 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 quản lý 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 như đinh 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 nhờ vào 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 hóa cấp phép và khởi tạo biến số nguyên bằng 0, có những trình biên dịch tự động hóa cấp phép 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 trọn vẹn nằm trong tay bạn .

Xem thêm  Hướng dẫn chia sẻ dữ liệu giữa máy ảo và thật trên VirtualBox

Bạn đang xem: Dev c++ không chạy được trên các bản của win 8

Đặ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 array<100>hayint array<100><100>thì tỉ lệ gặp lỗi của bạn sẽ cao hơn bình thường.

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.

Với C hay C + +, nếu bạn sử dụng IDE với những tham số mặc định, thì thường lỗi trên sẽ bị trình biên dịch bỏ lỡ, ko nhìn thấy. Có 1 số ít trình biên dịch nếu thông số kỹ thuật cờ biên dịch chặt hơn một chút ít, bạn sẽ nhìn thấy warning. Tuy nhiên phần lớn coder tất cả chúng ta đều mặc kệ warning, và đó là lí do chương trình của bạn chạy không đúng .

Xem thêm: Tuyển Tập Hình Ảnh Hoa Hồng Đen Đẹp Nhất, 43+ Hình Ảnh Hoa Hồng Đen Đẹp Và Ý Nghĩa

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

Xem thêm  ‎Flo - Lịch kinh nguyệt

Xem thêm: Hướng dẫn dò vé số từ bảng kết quả xổ số miền bắc

Xét đoạn mã sau :# include using namespace std ; int main ( ) { int a ; coutBâ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 nhắc nhở 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 .*

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ì những bạn hoàn toàn có thể hiểu sơ sơ về lỗi không khởi tạo biến và tai hại của nó rồi chứ .Lỗi này không chỉ gặp với C + +, mà hoàn toàn có thể 1 số ngôn từ khác cũng hoàn toàn có thể gặp ( với 1 số ngôn từ 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 người dùng nhé .

Xem thêm  Tra cứu FE Credit – Cách kiểm tra Hợp đồng Trả góp FE Credit

Source: https://bem2.vn
Category: TỔNG HỢP

Rate this post

Bài viết liên quan

Để lại ý kiến của bạn:

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *