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

switch case的case 1分支中for循环不执行问题排查(Turbo C++)

问题描述

在Turbo C++环境下编写C语言程序时出现异常:switch case控制结构的case 1分支中,printf函数可正常输出,但分支内的for循环完全不执行,程序编译过程未产生任何错误或警告提示。
测试代码如下:

#include<stdio.h> // 原代码笔误写为studio.h
#include<conio.h>
void main()
{
    clrscr();
    int fun,inp,i;
    printf ("Enter a number = = ");
    scanf ("%d",&inp);
    printf ("\n");

    printf ("Enter 1 for reverse the number \n");
    printf ("ENTER = ");
    scanf ("%d",&fun);
    printf ("\n");

    switch (fun)
    {
        case 1 :
            printf ("\n Case 1 \n");
            for (i=0;i>=inp;i++)
            {
                printf ("\n %d \n",inp);
                inp=inp-1;
            }
            break;
    }

    getch();
}
故障根因

for循环完全不执行的直接原因是循环判断条件写反,初始状态下条件恒为假:

  • C语言for循环的执行规则为:先执行单次初始化表达式,之后每次进入循环体前先计算条件表达式的值,值为真(非0)才执行循环体,值为假(0)直接跳过整个循环结构。
  • 你的循环初始化时给i赋值为0,判断条件写的是i >= inp。正常场景下用户输入的待反转数字inp都是正整数(比如输入123、56这类大于0的值),初始判断时0 >= 正整数的结果恒为假,循环体自然一次都不会执行。
其他代码问题修正

除了核心的条件写反问题,代码还有两处容易引发异常的笔误和逻辑问题:

  • 头文件拼写错误:原代码写的#include<studio.h>是笔误,C语言标准输入输出头文件为#include<stdio.h>,Turbo C++对旧语法兼容度高未抛出错误,但在其他标准编译器下会直接编译失败。
  • 循环逻辑冗余混乱:定义的循环变量i在循环体内完全没有被使用,循环体内还在修改判断条件里用到的inp变量,就算把条件符号改成i <= inp,循环执行次数也会完全不符合预期。如果要实现从输入值开始逐次减1输出的倒序打印逻辑,不需要额外定义i,直接写为for (; inp > 0; inp--)即可。

内容的提问来源于stack exchange,提问作者Himanshu Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:34:02