我的程序中有此代码,但是它不打印数字,但是如果我将“((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/

10-11 18:27