30/09/2018, 17:41

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.

Mai Anh Dũng viết 19:46 ngày 30/09/2018

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

NoPainNoGain viết 19:53 ngày 30/09/2018

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

Bài liên quan
0