我的程序中有此代码,但是它不打印数字,但是如果我将“((char)i)”中的“i”切换为任何普通字符,例如说“a”,则它将打印到控制台。
为什么不打印到我的控制台?
char debugStr[1000];
for(int i = 0; i < 1000; i++)
{
debugStr[i] = ((char)i);
}
OutputDebugStringA(debugStr);
下面成功打印了一行1000“a”:
char debugStr[1000];
for(int i = 0; i < 1000; i++)
{
debugStr[i] = ((char)'a');
}
OutputDebugStringA(debugStr);
最佳答案
第一个字符的值为零。
大概,OutputDebugStringA
将其参数解释为C样式的字符串:零终止的字符序列。因此它将一直打印字符,直到找到零为止。在这种情况下,这将立即发生,因此不会有任何结果。
第二个示例给出了未定义的行为:它将从数组的末尾滚动并继续前进,直到找到零值字节或到达无法读取的内存位置并崩溃为止。
关于c++ - 打印字符和整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18856490/