,一个最好玩/好奇的问题:如何编写C++,将遍历的bool
(即true
和false
)两个值一for
循环,只使用bool
的操作(即不转换为其他类型)?如何写在布尔值的`for`环路(假,真)
背景是,我要检查有多少解决方案,像(A && B) || (!B && !C && !D) == true
方程存在,并开始写类似for (bool A=false; ??? ; ++A) for (bool B=false; ...)
等,但立即得到了由???
卡 - 即什么是继续循环的条件?当然,我重写它使用int,而我也知道do ... while
循环的工作,但我得到了好奇,如果这是有史以来可能写出这样的for
循环?而且,由于SO似乎没有有一个答案,我决定问:)
更新:请注意,是“明显的”变种for(bool A=false; !A; A=true)
在至少两个现在移除的答案建议将只运行一次迭代,因为对于第二个条件!A
变得false
和循环结束。
经过一番琢磨之后,我认为这是不可能做到这一点在C++ 03没有迪特马尔库尔提出第二个变量或基于指针结构等。该条件应该在期望的执行中测试三次,所以bool的两个值是不够的。而do-while循环工作,因为第一次迭代无条件地执行,条件只有两次检查等一个布尔值可用于持续和退出之间进行选择。
令人惊讶的是,错误的答案被迅速删除! – 2012-01-10 14:57:39
是的,当他们这样做时你不讨厌它吗?我觉得这是一个很好的问题。我upvoted。 – 2012-01-10 15:01:54
因为这个网站不是为了好玩/好奇。真正的问题! PS不,这不是我,我也很好奇。 – 2012-01-10 15:02:19