使用char作为小整数值而不是使用INT

时间:2016-06-08 16:42:30

标签: c++

我正在使用c ++编写一些代码。

类型char是我机器中的一个字节,int类型是四个字节。

由于我的输入值低于100,我使用char类型而不是整数类型,以便以有效的方式进行处理,如下面的代码所示。

int do_main(int argc, const char *argv[]) {
        int TC;
        cin >> TC;

        while (TC--) {
            unsigned char num;
            char code[7];
            for (int i = 0; i < 7; ++i) code[i] = 0;
            cin >> num;
            int idx = 0;
            while (1) {
                code[7-1-idx++] = num % 2;
                num /= 2;
                if (num < 2) break;
            }

            code[7 - 1 - idx] = num;

            for (int i = 0; i < 7; ++i) cout << code[i] << endl;

        }
        return 0;
    }

正如您可以看到上面的代码,10位数值被转换为2位类型。但是,我的问题是价值不是我的预期。它显示了一些不是1或0的奇怪字符。

我认为这是由于类型。因此我将char修改为int并再次运行代码。我确认代码[i]显示了我预期的修正值。

总结..我的问题是使用char而不是int?

有什么问题

我知道char的目的是存储字符但是对于一些小的整数值(最多1个字节),我们可以使用char而不是int类型。

1 个答案:

答案 0 :(得分:2)

这是因为std::cout&#39; s operator<<(char)被重载,因此它将显示与该数字对应的ascii字符。您可以这样做

,而不是将类型从char更改为int
for (int i = 0; i < 7; ++i)
    cout << static_cast<int>(code[i]) << endl;

请参阅this