一个有趣/好奇的问题:怎样在C++中编写一个
背景是我想检查类似于
更新:请注意,在至少两个现已删除的答案中建议的“显然”的变体
经过一些思考,我认为在C++03中不使用第二个变量或像Dietmar Kühl建议的基于指针的构造是不可能做到的。该条件应该被测试三次以实现所需的执行效果,因此只使用两个bool值是不够的。而do-while循环之所以起作用,是因为第一次迭代是无条件执行的,条件只被检查了两次,因此可以使用一个bool值来选择继续还是退出。
for
循环,它可以迭代两个bool
值(即true
和false
),只使用bool
操作(即不进行其他类型的转换)?背景是我想检查类似于
(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中不使用第二个变量或像Dietmar Kühl建议的基于指针的构造是不可能做到的。该条件应该被测试三次以实现所需的执行效果,因此只使用两个bool值是不够的。而do-while循环之所以起作用,是因为第一次迭代是无条件执行的,条件只被检查了两次,因此可以使用一个bool值来选择继续还是退出。