如果发生任何运行时错误,为什么返回垃圾值?

Muk*_*man -5 c

在C中,我发现如果发生运行时错误,则返回垃圾值.但是为什么在这种情况下会返回垃圾值?

此代码将给出运行时错误.我知道为什么在这里发生运行时错误.但我想知道为什么返回值是垃圾值.

#include<stdio.h>

int main()
{
    int *x;
    *x = 10;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Isk*_*rak 5

这不是垃圾值,它是分段错误的Microsoft Windows错误代码; 0xC0000005(STATUS_ACCESS_VIOLATION是正确的名称)

x是未初始化的,因此它可能指向操作系统已授予您访问程序的内存,因此当您取消引用它时会出现访问冲突.在Linux上,您可能希望看到139(SIGSEGV),具体取决于操作系统和编译器.

编辑:请注意,您main不会返回此值 - 该过程将被操作系统终止.