我想在unsigned char
循环中遍历for
的整个范围。假设我想要打印0到255之间的所有数字,我该如何完成呢?
以下代码将是无限循环:
for (unsigned char i=0; i<=255; i++)
cout << i << endl;
这个错过了0或255,具体取决于它是i++
还是++i
for (unsigned char i=0; ++i<=255; i++)
cout << i << endl;
我可以在for
循环之前/之后放置一个cout以补偿丢失的条目,但我寻求更优雅的解决方案。
任何帮助将不胜感激! (while
和do-while
循环也欢迎!)
答案 0 :(得分:10)
尝试,
unsigned char i = 0 ;
do {
cout << i << endl ;
}
while ( ++i ) ;
do .. while
优于其他形式的好处是,在测试条件之前,您可以获得一次免费运行。在程序员的工具箱中,这是一个重要的工具(如果不经常使用)。
答案 1 :(得分:0)
你可以分手:
for (unsigned char i = 0; i < 16; ++i)
{
unsigned char base=i*16;
for (unsigned char j = 0; j < 16; ++j)
{
unsigned char val=base+j;
std::cout << val << std::endl;
}
}
答案 2 :(得分:0)
使用boost::irange可以被认为是优雅的( live example ):
#include <boost/range/irange.hpp>
#include <iostream>
int main()
{
for(auto i : boost::irange(0, 256) )
std::cout << i << "\n";
return 0;
}