c - 如果语句不起作用?

标签 c if-statement scanf

我是编程新手。我只想问一下下面的代码有什么问题:

scanf("%i", &battlechoice);

printf("BCHOICE WAS:%i\n", battlechoice);

if (battlechoice=4) //fleeing
{
    fleechance=rand() % 100;
    if (fleechance <= 49)
    {
        printf("You attempt to flee...\n");
        sleep(2000);
        printf("Oh dear! You failed to flee! Gamover!\n");
        printf("Thank you for playing! -Anthony\n");
        sleep(7000);
        exit(0);
    } 
    else
    {
        printf("You succeeded in fleeing! You will be returned to town\nshortly...\n\n\n\n\n");
        sleep(3000);
        break;
    }
}        //end fleeing

else if (battlechoice=1) //attacking
{
    //player damage gen
    printf("You commence the attack...\n");
    sleep(750);
    damagemax = rand() % lvl * 1.4;

    damageoutcome = damagemax + damagemin;
}

正在发生的事情是它正在执行两个 if 语句,即使它们都有不同的条件?怎么了?提前致谢。

最佳答案

您将赋值运算符 = 与等号运算符 == 混淆了。改为这样写:

if (battlechoice == 4)

等等。

一些 C 程序员使用“Yoda 条件语句”来避免在这些情况下意外使用赋值:

if (4 == battlechoice)

例如,这不会编译,捕获错误:

if (4 = battlechoice)

关于c - 如果语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14289635/

相关文章:

c - APUE.H Linux C 编程错误

c# - 如何在单击按钮时保持 boolean 值的状态?

c++ - 使用 sscanf 读取格式化字符串数据

c - 如何使用 getchar() 扫描一个单词

c - 由于冒号,从文件中读取字符无法按预期工作

关于指针使用的说明

c - 如何在C编程中控制 'char'类型的用户输入?

c - 无法在 Raspberry Pi 上加载 eBPF/XDP 代码

c++ - while循环在C++中不循环

variables - 在Lua中不等于或等于