我在我的程序中有这个代码,但它不打印数字,但如果我要将"((char)i)"中的"i"切换为任何正常字符,比如说'a',那么它会打印到控制台.
为什么不打印到我的控制台?
char debugStr[1000];
for(int i = 0; i < 1000; i++)
{
debugStr[i] = ((char)i);
}
OutputDebugStringA(debugStr);
Run Code Online (Sandbox Code Playgroud)
下面成功打印1000"a"的行:
char debugStr[1000];
for(int i = 0; i < 1000; i++)
{
debugStr[i] = ((char)'a');
}
OutputDebugStringA(debugStr);
Run Code Online (Sandbox Code Playgroud)
第一个字符的值为零.
据推测,OutputDebugStringA将其参数解释为C风格的字符串:零终止字符序列.所以它会一直打印字符,直到找到零; 在这种情况下,这将立即发生,所以什么都不会出来.
第二个例子给出了未定义的行为:它将在数组的末尾滚动并继续运行,直到找到零值字节,或者到达不可读的内存位置并崩溃.