Tại sao `If (u = v) {}` lại không báo lỗi và vẫn chạy vào trong chương trình trong khi lệnh `if (u == v) {}` mới đúng?

cho e hỏi tại sao e viết chương trình lệnh điều kiện trong C++
if (u = v) {} tại sao lại không báo lỗi mà vẫn chạy vào trong chương trình trong khi lệnh if (u == v) {} mới đúng?

Cảm ơn.

u = v sẽ làm hai việc

  • Gán u = v
  • Trả về v

Khi đó lệnh if (u = v) {} sẽ tương đương với

u = v;
if (v) {}

Trong C++, nếu v có kiểu dữ liệu cơ bản, tức int, char, bool, float, … thì if (v) luôn hợp lệ với

  • v bằng 0false
  • v khác 0true

Thử v với std::string thì sẽ bị báo lỗi do không thể convert std::string thành bool được.

Xem thêm video nói về vấn đề này

6 Likes

cảm ơn anh , thú vị thật :v:

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