Toán tử tăng (increment) giảm (decrement)

Không xác định là sao nhỉ -_-

Có nghĩa là kết quả tuỳ thuộc vào cách mà compiler sử lý phép toán như thế nào, nên kết quả không xác định, tuỳ thuộc từng dòng compiler. :slight_smile:

Em vẫn chưa hiểu lắm. x++ thì giờ giá trị của x nó lên 3, xong cái --x là nó xuống 2 thì phải bằng 9 chưa nhỉ, sao ra console lại bằng 1 ??

x++ trả về copy của x trước khi tăng 1 nên làm gì pow(x++, --x) là pow(3,2) được. pow(++x, --x) thì còn có thể

cái này là ko xác định, tùy trình dịch mà kết quả nó ra khác nhau. Mấy cái bài tập kiểu này thì vứt hết đi. Nói nặng ra là nếu sách nào viết như vậy thì đốt sách đi.
http://rextester.com/LSUGMF94474 gcc cho ra kết quả 1
http://rextester.com/TSRA31910 clang cho kết quả 4
http://rextester.com/EBRF79923 vc++ cho kết quả 2

4 Likes

Vậy là bài tập sai hả bác @@. Học hành chả ra sao mà bài tập như này thì hoang mang quá !!

bài tập sai. Em post lên stackoverflow hỏi thử xem nhận được bao nhiêu câu chửi.

Anh cho em hỏi học C++ như anh thì sau mấy tháng mới có thể gọi là beginner ạ ?? Sau bao nhiêu nữa mới lên pro ?? Anh cứ nói thực nhớ chứ đừng ghi kiểu kiểu như tùy người hay là tương tự gì đó nha anh !! Thanks

6 tháng beginner (1 lớp intro to programming bằng C++)
xong 4 năm đh thì vẫn là intermediate, thậm chí vẫn có thể gọi là beginner.
expert thì mình ko phải expert nên ko dám phán

beginner là hiểu và biết sử dụng con trỏ, hàm, lớp.
intermediate là biết sử dụng STL container và algorithm, ko sử dụng con trỏ nữa, nắm vững OOP.
expert thì có thể đọc và viết template, viết thư viện định nghĩa các syntax trong C++, ví dụ

  Eigen::MatrixXf m(4,4);
  m <<  1, 2, 3, 4,
        5, 6, 7, 8,
        9,10,11,12,
       13,14,15,16;

ngoài ra expert chuyên sâu 1 lĩnh vực nên cũng khó mô tả chung chung.

3 Likes

Ngu như em chắc phải cỡ 5 đến 7 năm. Thanks bác đã cho lời khuyên.

Bị hiệu ứng lề.    

Anh @ltd hay @nguyenchiemminhvu đưa ra ý kiến đi

Trình độ C++ của mình chỉ ở mức beginner thôi bạn. Mình chỉ dám nhận viết phần C++ cơ bản này thôi, không viết được cho phần Qt và C++ OOP. Lý do duy nhất mình được chọn tham gia dự án C++ Tutorial này là mình có thời gian rãnh nhiều hơn các thành viên khác (vô công rồi nghề). Thế nên mình nghĩ mọi người đừng nên quá trông đợi những gì mình viết là đúng mà dùng nó như tài liệu tham khảo, đem cái mình viết đi hỏi người khác giỏi hơn xem như thế có đúng không. Mình post lên đây ai thấy chổ nào sai nếu có thời gian thì góp ý để mình sửa lại chổ đó.

6 Likes

@tntxtnt nói đúng rồi bạn. Cả hai ví dụ đó đều có đặc tính không xác định.

Chính xác là một cái là Undefined Behavior, cái còn lại là Unspecified Behavior.
Nhưng mình nghĩ người ra đề cố tình thôi.

Ủa sao a @Thesky xóa mất bài tập rồi :sweat_smile:
Mình thấy để vậy, tạo ra thắc mắc rồi tranh luận cũng hay mà.
P/s: Mới đầu tưởng cố tình để vậy là để tranh luận -> sau đó tổ lái sang Undefined behavior cho tới khi thấy xóa mất

1 Like

:joy: Chắc anh Vũ thấy không hợp nên edit lại rồi :smiley:
Mọi người đang chờ khóa video của anh Đạt là chính :joy:

1 Like

Không sao cả, có @tntxtnt nhắc thì mới biết được là tài liệu có đúng hay không.

Ta tìm bài tập khác phù hợp hơn, cảm ơn @tntxtnt rất nhiều :heart_eyes:

@drgnz mình chọn bài tập khác, bỏ bài đấy đi.

4 Likes

A post was split to a new topic: Anh Đạt còn khóa nào free nữa k?

sau 1 ngày em đã trở thành beginner, sau 1 tháng em thành pro. sau 1 năm em backward lại beginner , haha :blush:

Implementation-defined còn đỡ (có docs, hoặc không :expressionless: ), còn undefined thì coi như “đặt ngoài vòng”. Unspecified nghĩa là có thể lúc này lúc khác, và bị giới hạn trong n lựa chọn. Undefined là không có giới hạn gì hết.

1 Like

vậy là postfix thì có vai trò rộng hơn có thể lấy giá trị tr và sau khi thay đổi prefix thì chỉ lấy dc giá tri sau khi thay đổi mà thôi

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?