[英]Running through entire range of `unsigned char` in `for` loop
我想在for
循环中运行整个unsigned char
范围。 假设我要打印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
循环!)
尝试,
unsigned char i = 0 ;
do {
cout << i << endl ;
}
while ( ++i ) ;
do .. while
其他形式的好处是你在测试条件之前获得一次免费运行。 在程序员的工具箱中,这是一个重要的工具(如果不经常使用)。
你可以分解它:
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;
}
}
使用boost :: irange可以被认为是优雅的( 实例 ):
#include <boost/range/irange.hpp>
#include <iostream>
int main()
{
for(auto i : boost::irange(0, 256) )
std::cout << i << "\n";
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.