Vì vậy, tôi tò mò là tại sao điều này xảy ra.C++ Đánh giá Boolean
int main()
{
bool answer = true;
while(answer)
{
cout << "\nInput?\n";
cin >> answer;
}
return 0;
}
hành vi dự kiến: 0 - Thoát chương trình, 1 - Gợi ý một lần nữa, Bất kỳ khác không số nguyên khác hơn là 1 - Gợi ý một lần nữa
hành vi thực tế: 0 - Đúng như dự đoán, 1 - Đúng như dự đoán, Bất kỳ khác không số nguyên khác hơn là 1 - Infinite loop
Từ http://www.learncpp.com/cpp-tutorial/26-boolean-values/
One additional note: when converting integers to booleans,
the integer zero resolves to boolean false,
whereas non-zero integers all resolve to true.
Tại sao chương trình đi vào vòng lặp vô hạn?
+1 cho câu hỏi đặt ra.Boolean là một cá trích đỏ; vấn đề thực sự phải làm với cách hoạt động của luồng đầu vào. Hãy thử những điều tương tự với một int, và sau đó nhập một lá thư và xem những gì sẽ xảy ra ;-) – Cameron
Có lẽ tôi sai nhưng khi bạn lấy dòng lệnh đầu vào hình thức ... không phải là trở thành một chuỗi và do đó bạn đang thực sự chuyển đổi giữa chuỗi và boolean? Điều này có thể khiến mọi việc trở nên khó khăn. –
Cameron làm cho một điểm tốt: một nhân vật có thể được chuyển đổi thành một số nguyên. Ví dụ, '' A '== 65', nhưng điều tương tự cũng xảy ra. – chris