01/10/2018, 09:43
Lỗi logic trong C++
Đoạn code trong ảnh mắc lỗi logic ở hàm if đầu tiên nhưng tại sao chương trình vẫn chạy và cho ra kết quả sai ( đúng ý đồ thì x=1,y=2) , tại sao lại như vậy?
![](/pictures/picfullsizes/2018/10/02/jgx1538416633.png)
Bài liên quan
20…
bạn lên xem lại toán tử gán "="với toán tử so sánh “==”
Mình biết có lỗi sai phần toán tử gán và toán tử so sánh, nhưng mình không hiểu tại sao code sai mà máy vẫn chạy được chương trình?
Code bạn sai logic còn không sai về quá trình biên dịch, mặc định lệnh gán giá trị vào biến nó sẽ trả về 2 giá trị là true hoặc false, bạn gán = thì máy nó thực hiện phép gán, sau đó trả về true, vậy nên if(x=0) tương đương if(true) và lúc này x sẽ gán = 0,…
không phải code sai mà là bạn hiểu sai. Phép gán là phép toán có trả về giá trị và giá trị đó nếu có thể chuyển thành bool thì sẽ chuyển thành bool
if(x = 2)
=if(2)
=if((bool)2)
=if(true)
if(x = 0)
=if(0)
=if((bool)0)
=if(false)
Và túm lại,
(bool)0 == false
và các giá trị khác thìtrue