You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

for循环中能否嵌套while循环?C语言反转数字代码输出负数原因

问题解答

问题1:是否可以在for循环内部使用while循环?

可以。C语言完全支持循环嵌套语法,for循环、while循环、do-while循环之间可以任意互相嵌套,只要业务逻辑合理即可正常运行。

问题2:反转代码输出负数值的原因

出现异常输出是两个代码bug共同导致的整数溢出问题:

  • 错误修改for循环控制变量input:while循环内直接对for循环的迭代变量input做除法修改,会导致for循环永远无法满足input<=100的退出条件,程序进入死循环
  • 反转存储变量c未重置:c是全局定义的变量,每次处理新数字前没有重置为0,每次循环都会叠加之前的反转结果,数值持续增大超过int类型的最大取值范围后,发生有符号整数溢出,C语言中该行为属于未定义行为,因此会输出负数值或其他异常结果。

修正后的参考代码

#include<stdio.h>
#include<stdlib.h>

int main() {
    int input, x, c;
    for (input=1; input<=100; input++)
    {
        // 用临时变量存储待反转数值,不修改for循环控制变量
        int temp = input;
        // 每次反转新数字前重置存储变量
        c = 0;
        while(temp != 0)
        {
            x = temp%10;
            c = c*10 + x;
            temp = temp/10;
        }
        printf("Reverse Number of %d is : %d\n", input, c);
     }
    return 0;
}

内容的提问来源于stack exchange,提问作者Bm Aravinthan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:09:06