c++ - 在 gcc 中显示字符数组不起作用

标签 c++

我写了一段代码,用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/

相关文章:

c++ - 如何将 pcre_study 与 pcrecpp 一起使用?

c++ - 打印欧拉路径

c++ - 从 c 转换为 c++ 时出现归档错误

c++ - 合理的压缩 block 大小

c++ - 如何让敌人随机循环并在一定距离内跟随玩家? C++ 控制台游戏

c++ - Node.js 原生插件中的枚举类型

c++ - 我可以从 C++ 调用 clojure 代码吗?

c++ - 线程、信号和子处理 : What a world. ..多么美好的世界

c++ - 如何调用在另一个文件中找到的函数?

c++ - header semaphore.h 不能包含 eclipse juno。我收到错误 "unresolved inclusion"