我写了一段代码,用gcc编译器测试
#include <iostream>
int main()
{
char arr[ 1000 ];
for( int index( 0 ); index < 1000; ++index )
{
std::cout << arr[ index ] << std::endl;
}
return 0;
}
我希望它打印垃圾值,但令我惊讶的是,它没有打印任何东西。当我简单地将 arr 的数据类型从 char 更改为 int 时,它会按预期显示垃圾值。有人可以给我解释一下吗?
最佳答案
<<
的重载对于字符类型,不要将它们视为
整数类型,但作为字符。如果垃圾值
对应于一个可打印字符(例如 97,它对应于
至 'a'
), 你会看到的。如果没有(例如 0),则您不会。
如果垃圾值对应于一些转义序列
这会导致您的终端在黑色背景上使用黑色前景,您将看不到任何其他内容。
如果您想查看 char
的实际数值(或者
任何字符类型),只需将变量转换为 int
前
输出它:
std::cout << static_cast<int>( arr[index] ) << std::endl;
关于c++ - 在 gcc 中显示字符数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497409/