这个c代码有什么问题?

use*_*832 -7 c dev-c++

#include <stdio.h>

int main() {

    int i = 1;
    int j = -1;

    while(i)
        i++;
    while(-j)
        j--;

    i = i-1;
    j = j+1;

    printf("%d %d\n",i,j);
}
Run Code Online (Sandbox Code Playgroud)

我想知道int的范围!这段代码无法得到正确的答案!但它可以!

#include <stdio.h>

int main() {

    int i = 1;
    int j = -1;

    while(i > 0)
        i++;
    while(j < 0)
        j--;

    i = i-1;
    j = j+1;

    printf("%d %d\n",i,j);
}
Run Code Online (Sandbox Code Playgroud)

我不知道他们之间有什么区别!

Bil*_*nch 5

这两个代码示例都依赖于未定义的行为来确定int的最大值.没有为签名号码定义溢出int.

要查找int的最大值,只需读取该值即可INT_MAX.

如果你真的想以INT_MAX便携方式计算价值,那么你应该看看这个答案:是否有一种可移植的方式来定义INT_MAX?