如何打印for循环变量的所有值?

Abd*_*yan 2 c++ for-loop

我写了一个程序来打印十六进制值,八进制值和相应的字符,用连字符分隔,用于40到126之间的ASCII值(包括两者).我的代码是:

#include<iostream>
using namespace std;
int main()
{
      int i;
      char c;
        for(i=40;i<=126;i++)
        {
            c=i;
            cout<<i<<"-"<<hex<<i<<"-"<<oct<<i<<"-"<<c<<"\n";
      }
      return 0;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但在这里有一些i滑雪的价值.即58,59不打印.我想打印40到126范围内的所有值.有什么建议吗?

awe*_*oon 14

如果要首先打印为十进制,则应添加std::dec流操纵器:

cout << dec << i << "-" << hex << i << "-" << oct << i << "-" << c << "\n";
//      ^^^
Run Code Online (Sandbox Code Playgroud)

因为在第一次循环迭代之后,标志std::ios_base::octoct`仍然存在.


And*_*ter 6

您用于每次调用的最后一个操纵器coutoct,并且流"记住" - 因此,当您i在没有操纵器的情况下输出下一次时,它仍然oct用作输出格式.只需dec明确使用第一个输出i:

cout << dec << i << "-" << hex << i << "-" << oct << i << "-" << c <<"\n";
Run Code Online (Sandbox Code Playgroud)