我正在使用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。
我以为是因为类型的关系。因此,我将字符修改为int,并再次运行代码。我确认代码显示了我预期的校正值。
总结一下..。我的问题是,用char代替int有什么问题?
我知道char是用来存储字符的,但是对于一些小的整数值(最多1字节),我们可以使用char代替int类型。
发布于 2016-06-08 16:51:39
这是因为std::cout的operator<<(char)被重载,因此它将显示与数字对应的ascii字符。
for (int i = 0; i < 7; ++i)
cout << static_cast<int>(code[i]) << endl;见这。
https://stackoverflow.com/questions/37708311
复制相似问题