为什么这个for循环进入无限循环执行?

Jee*_*tel 2 c for-loop

看到我有一个像这样的代码

int main () {
    uint32_t i ;
    for(i=4;i>=0;i--)
            printf("i is %d \n",i);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它进入无限循环.为什么我的价值低于0并且仍然循环进入执行?

Vla*_*mir 11

uint32_t表示无符号整数,因此其值始终> = 0 - 因此您的循环无限执行.

请注意,许多编译器将发出警告,指示i>=0比较始终为true.


Mar*_*say 6

你会看到负数值,printf因为你将其打印为%d,但在条件中,uint32_t总是正数(你正在做溢出).