Câu hỏi chủ yếu là vui chơi/tò mò: cách viết vòng lặp for
trong C++ để lặp qua hai giá trị bool
(ví dụ: true
và false
) , chỉ sử dụng các hoạt động với bool
(nghĩa là không có chuyển đổi cho các loại khác)?Cách viết vòng lặp `for` qua giá trị bool (sai và đúng)
Nền là tôi muốn kiểm tra có bao nhiêu giải pháp tồn tại cho một phương trình như (A && B) || (!B && !C && !D) == true
, và bắt đầu viết một cái gì đó giống như for (bool A=false; ??? ; ++A) for (bool B=false; ...)
vv nhưng ngay lập tức đã bị mắc kẹt bởi ???
- ví dụ: những gì sẽ là điều kiện để tiếp tục vòng lặp? Tất nhiên tôi viết lại nó để sử dụng int, và tôi cũng biết rằng một vòng lặp do ... while
sẽ làm việc, nhưng tôi đã tò mò nếu nó bao giờ có thể viết như một vòng lặp for
? Và kể từ khi SO dường như không có một câu trả lời, tôi quyết định hỏi :)
Cập nhật: lưu ý rằng một "rõ ràng" biến thể for(bool A=false; !A; A=true)
đề xuất trong ít nhất hai câu trả lời đã bị loại bỏ sẽ chỉ chạy một lần lặp, vì đối với điều kiện thứ hai, điều kiện !A
trở thành false
và vòng lặp kết thúc.
Sau khi cân nhắc, tôi tin rằng không thể làm điều đó trong C++ 03 mà không có biến thứ hai hoặc cấu trúc dựa trên con trỏ như được gợi ý bởi Dietmar Kühl. Các điều kiện cần được kiểm tra ba lần trong một thực hiện mong muốn, do đó, hai giá trị của một bool chỉ đơn giản là không đủ. Và vòng lặp do-while hoạt động vì vòng lặp đầu tiên được thực hiện vô điều kiện, điều kiện chỉ được kiểm tra hai lần và do đó giá trị bool có thể được sử dụng để chọn giữa tiếp tục và thoát.
Thật là tuyệt vời khi các câu trả lời sai bị xóa đi! –
Có, bạn không ghét nó khi họ làm điều này? Tôi thấy đó là một câu hỏi hay. Tôi upvoted. –
Bởi vì trang web này không phải là niềm vui/sự tò mò. Câu hỏi thực sự! PS Không, không phải tôi, tôi cũng tò mò. –