【问题标题】:If statements not working?如果语句不起作用?
【发布时间】:2012-12-26 17:05:46
【问题描述】:

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

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 语句,即使它们都有不同的条件?怎么了?提前致谢。

【问题讨论】:

  • 另外 sleep(3000) 是一个很长的睡眠!

标签: c if-statement scanf


【解决方案1】:

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

if (battlechoice == 4)

等等。

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

if (4 == battlechoice)

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

if (4 = battlechoice)

【讨论】:

  • 那些 C 程序员应该在他们的编译器中打开警告。
  • “尤达条件”太可怕了,恕我直言。我强烈推荐和@netcoder 一样
【解决方案2】:

你正在写 if(battlechoice=4) 用 if(battlechoice==4) 纠正它

因为 '=' 和 '==' 运算符都不同

'=' 是赋值运算符,'==' 是比较运算符

查看 C 中运算符的链接http://www.tutorialspoint.com/cplusplus/cpp_operators.htm

【讨论】:

    猜你喜欢
    • 2013-06-20
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多