繁体   English   中英

在`for`循环中运行整个`unsigned char`范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM