印刷字符和整数

Cod*_*rJL 1 c c++ string char

我在我的程序中有这个代码,但它不打印数字,但如果我要将"((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)

Mik*_*our 7

第一个字符的值为零.

据推测,OutputDebugStringA将其参数解释为C风格的字符串:零终止字符序列.所以它会一直打印字符,直到找到零; 在这种情况下,这将立即发生,所以什么都不会出来.

第二个例子给出了未定义的行为:它将在数组的末尾滚动并继续运行,直到找到零值字节,或者到达不可读的内存位置并崩溃.