时光の尘 2024-11-20 15:16 采纳率: 92.9%
浏览 4
已结题

C语言--a的使用,uint32_t的坑

以下代码运行结果为

#include<stdio.h>
int main()
{
    uint32_t a = 100;
    while (a > 0)
    {
        --a;
    }
    printf("%d", a);
    return 0;
}

二者的区别:

#include<stdio.h>
int main()
{
    uint32_t a = 100;
    while (a >= 0)
    {
        --a;
    }
    printf("%d", a);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 时光の尘 嵌入式领域优质创作者 2024-11-20 15:29
    关注

    代码一,while判断条件是a>0,a每次减1,一直减到0,while语句判断0>0条件为假,跳出循环,所以a的值为0;
    代码二,while判断条件是a>=0,a每次减1,一直减到0,但是uint32_t取值范围是0~2^32-1(4294967295),当0继续往下减时会溢出,值会变成4294967295进入死循环,没有输出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月20日