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

C语言if-else语句异常:输入任意值均执行第一个分支,求问题排查

问题分析与解决办法

你代码里的核心错误是把比较相等的运算符==写成了赋值运算符=,这是C语言新手非常常见的问题。

在if (choice='y')这个语句中,choice='y'是赋值操作——它会把字符'y'强制赋值给变量choice,同时这个表达式的结果就是'y'(非零值)。而C语言里非零值会被判定为true,所以不管你输入什么内容,第一个if条件都会成立,程序也就只会执行第一个分支的输出。第二个else if里的choice='n'也是同样的错误,但因为第一个条件已经触发,它永远不会被执行。

修正后的代码如下:

#include <stdio.h>

int main () {

    char choice;

    printf("are you handsome? (y or n): ");
    scanf("%c", &choice);

    if (choice == 'y') {
        printf("you are clearly lying");
    }
    else if (choice == 'n') {
        printf("i'm glad you're being honest :D");
    }
    else {
        printf("you're not following instructions");
    }
    return 0;
}

额外提示:如果想避免这类失误,可以把常量写在比较运算符的前面,比如写成if ('y' == choice)。这样如果不小心写成=,编译器会直接报错(因为不能给常量赋值),能帮你提前发现问题。

内容的提问来源于stack exchange,提问作者Mark David Semorio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:44:54