使用以下C代码可以使整数变量达到值-1吗?

Pal*_*shV 2 c int

使用以下C代码可以使整数变量达到值-1 -

main()
{
    int n=0;
    while(n++ != -1){
        printf("\n%d",n);
    }
}
Run Code Online (Sandbox Code Playgroud)

ala*_*ain 8

是的.在某一点上,变量将溢出并可能变为负数.但请注意,签名溢出是未定义的行为,因此无法知道将发生什么,这就是为什么应该避免这种代码的原因.


nvo*_*igt 5

这有一个理论和实践部分:

理论上,将一个加到整数的最大值将导致未定义的行为.这可能是任何事情.粉红色的大象可能正在从天而降.

在实践中,即使对于编译器供应商来说,粉红色的大象也很难实现,如果你在一个最大的值范围内添加一个,它们中的大多数只会产生最小的值范围.这意味着max + 1将导致min.

这样,一旦你从0计数到最大值,加一个达到min并再次计数到-1,是的,经过一段时间后你的整数将变为-1.