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

C语言中满足条件但if语句无法执行的问题求助

问题分析:while循环中if条件始终不触发的原因

你的代码核心问题是错误使用了scanf的返回值:

  • scanf("%d", &c)的返回值是成功读取的输入项数量,当输入合法整数时,它返回1,而不是你输入的那个整数值。
  • 你把这个返回值赋值给了变量c,导致c的值永远是1(输入合法的情况下),自然永远不等于12,所以if(c==12)的条件永远无法满足。

修正后的代码

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

int main()
{
    int c;
    while(true)
    {
        // 先判断scanf是否成功读取整数
        if(scanf("%d", &c) != 1) {
            // 处理输入无效的情况(比如输入非数字)
            printf("输入无效\n");
            break;
        }
        if(c == 12)
        {
            printf("goes in");
            break;
        }
    }
    return 0;
}

补充说明

  • 永远不要忽略scanf的返回值,它可以帮你捕获输入异常(比如用户输入字母、符号而非数字的情况)。
  • 原代码中用scanf的返回值覆盖了存储输入值的变量,这是逻辑上的关键错误,只要把赋值操作去掉,转而判断scanf的返回值是否正常,就能解决问题。

内容的提问来源于stack exchange,提问作者exciting desk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:31:06