以下代码在我的电脑上,字符\0
始终会被打印为一个空格(使用cout
命令)。然而,在我朋友的电脑上,字符\0
始终会被打印为字符a
。代码和截图如下:
#include <iostream>
using namespace std;
// Function main
int main()
{
cout << "xxx" << '\0' << "yyy" << endl;
return 0;
}
左侧: 我的电脑。 右侧: 我朋友的电脑。
这里发生了什么?为什么不同的电脑上结果不同?
PS:
即使我们共享相同的可执行文件exe(即在我的电脑上编译并在两台电脑上运行),结果仍然会有所不同。
我们都使用visual studio 2010,并具有相同的项目字符集。
这里可能存在一些缓冲区溢出问题,但请注意,我将始终得到一个空格,而我的朋友将始终得到字符“a”。
如果我们都执行
cout<<ends
,则结果也将相同。