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
相关产品推荐
相关产品推荐

