如果陈述不起作用?

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

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) 

如果(battlechoice = 4)用if(battlechoice == 4)

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

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

请参阅C http://www.tutorialspoint.com/cplusplus/cpp_operators.htm中的运算符链接;