01/10/2018, 08:22

C++ Chương trình này sao mà ko chạy vậy mọi người

Người bí ẩn viết 10:32 ngày 01/10/2018

Vì bạn khai báo biến c nhưng chưa khởi tạo giá trị cho nó nên không thể ++ lên được, cách fix:

a = b = c = d = 10;
++c; // hoặc c++;
Phùng Xuân Hoàng viết 10:26 ngày 01/10/2018

thế cái đề bài sao nó lại bảo chạy như vậy bạn

Nguyen Khac Sam Thuong viết 10:36 ngày 01/10/2018

Đề bài chủ ý giúp bạn hiểu được c++ và ++c khác nhau như thế nào. Cụ thế nếu bạn làm theo yêu cầu đề bài thì c++ = 10 báo lỗi vì c = c+1 = 10 mà c không có giá trị khởi tạo nên không tăng được, ++c = 10 thì c+1 = 10 = c nên sẽ in ra c = 10. Đó là cách hiểu của mình nhé
Cụ thể về vụ này bạn tham khảo topic này xem sao Khác biệt giữa i++ và ++i

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

Ko phải là gán vào hay chưa gán mà là ++i trả về một lvalue, còn i++ trả về một rvalue, mà rvalue không gán được, vì vậy báo lỗi.

Vì sao i++ lại là rvalue? Vì giá trị trả về của i++ chỉ đúng trong một thời gian rất ngắn, nên nó sinh ra chỉ để dùng một lần duy nhất, sau đó nó vô dụng. Nếu i là một đối tượng thì bạn sẽ thấy ngay vấn đề: bạn phải copy rồi trả về, thay vì trả về *this.

Nguyễn Quốc Hoàng viết 10:22 ngày 01/10/2018

Undefined behavior chắc rồi, cái toán tử ++ này mỗi chương trình biên dịch theo một kiểu á, nhiều khi mình thử viết sáng Assembly thì có nhiều bài toán không biết viết cách nào cho chuẩn luôn mà

Bài liên quan
0