对于以下代码,在我的PC上,char \0
将始终产生空格(使用时打印cout
).但是,在我朋友的PC上,char的结果\0
总是会产生一个char a
.代码和截图如下:
#includeusing namespace std; // Function main int main() { cout << "xxx" << '\0' << "yyy" << endl; return 0; }
左:在我的电脑上. 是的:在我朋友的电脑上.
这里发生了什么?为什么不同PC上的结果不同?
PS:
即使我们共享相同的可执行exe
文件(即在我的PC上编译并在两台PC上运行),结果仍然会有所不同.
我们都使用visual studio 2010和相同的项目字符集.
这里可能有一些缓冲区溢出,但请注意这样一个事实,即我总会得到一段space
时间,我的朋友将永远得到一个字符a
.
如果我们都这样做,它共享相同的功能cout<
.
Yu Hao.. 6
字符\0
或ASCII 0
不是可打印的字符,没有标准的输出方式.
从打印ASCII范围0x20
至0x7E
,看到维基百科:ASCII
字符\0
或ASCII 0
不是可打印的字符,没有标准的输出方式.
从打印ASCII范围0x20
至0x7E
,看到维基百科:ASCII