null终止char(\ 0)和`^ @`之间的区别

Han*_*Sun 4 c c++ arrays string char

我的代码是这样的:

#include <iostream>
using std::cout;
using std::endl;

int main(int argc, char *argv[])
{
    cout << (int)('\0') << endl;
    cout << (char)(0) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望在终端看到这样的:

$ test-program
0

$ 
Run Code Online (Sandbox Code Playgroud)

但是,我看到的是这样的:

$ test-program
0
^@
$
Run Code Online (Sandbox Code Playgroud)

令我困惑的是,我认为'\0'可以转换为0.并且0还可以投入\0.我希望看到一个null char跟随a endl,但结果是奇怪的^@.

有没有人有这个想法?

Mik*_*rov 12

^@就是您的终端模拟器呈现的方式'\0'.


Ian*_*and 7

^@是空字符的常见表示.类似地,^A用于表示序数值为1 ^G的字符,对于序数值为7(钟形)^M的字符,以及对于序数值为13的字符(回车符).

cout << (char)0
Run Code Online (Sandbox Code Playgroud)

只是打印字符表示,而不是整数表示