我的代码如下:
#include <iostream>
using std::cout;
using std::endl;
int main(int argc, char *argv[])
{
cout << (int)('\0') << endl;
cout << (char)(0) << endl;
return 0;
}
我期望在终端上看到像这样的内容:
$ test-program
0
$
然而,我看到的是这样的:
$ test-program
0
^@
$
我感到困惑的是,我认为'\0'可以转换为0,而0也可以强制转换为'\0'。我期望看到一个空字符紧随着endl,但结果却像'^@'这样奇怪。
有人对此有什么想法吗?
| hexdump -C
命令可以查看十六进制输出。这样你就可以确保 你的程序 执行的是你期望的操作,而不是终端表现出了你意料之外的行为。 - leemes