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

时间:2013-06-17 07:26:36

标签: 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;
}

它工作正常,但这里有一些i的值。即58,59不打印。我想打印40到126范围内的所有值。有任何建议吗?

3 个答案:

答案 0 :(得分:14)

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

cout << dec << i << "-" << hex << i << "-" << oct << i << "-" << c << "\n";
//      ^^^

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

答案 1 :(得分:6)

您用于cout每次通话时使用的最后一个操纵器是oct,并且流&#34;会记住&#34;那么 - 当你下次没有操纵者输出i时,它仍然使用oct作为输出格式。只需明确使用dec作为i的第一个输出:

cout << dec << i << "-" << hex << i << "-" << oct << i << "-" << c <<"\n";

答案 2 :(得分:0)

或者你可以使用好的'C库:

#include <stdio.h>
int main()
{
    int i;
    for(i=40;i<=126;i++)
        printf("%d 0x%X  '%c' \n", i, i, i);

    return 0;
}