#include <iostream>
using namespace std;
void main()
{
int leftover;
int gold = 3900;//satisfies the if else statement
if( gold>=4100){//successfully build item
leftover = gold-4100;
}
else if(4100>gold>=3500){
leftover = gold-3500;
}
cout << leftover << endl;
system("pause");
}
此代码不起作用,它将显示剩余使用而未初始化。但是当我改变gold(等等4200)的值以满足if语句时,它会起作用,显示从4100中扣除金币之后的余数。我只是在学校学习c ++所以我不熟悉if和if else还有很多感谢告诉我出了什么问题!
答案 0 :(得分:9)
4100>gold>=3500
没有按你的想法行事。它被评估为(4100>gold) >= 3500
,具体取决于gold
的值0 >= 3500
或1>3500
。查找运算符优先级。
你可能想要
(4100>gold) && (gold>=3500)
答案 1 :(得分:0)
如果你没有初始化该值并且if语句失败,那么你就是cout null
你有两个建议:
第一:
int leftover = -1; //初始化值
第二场:
else {leftover = 0; } //如果if case失败,则默认值
答案 2 :(得分:0)
是的,我犯了一个非常粗心的错误,唯一的问题是4100&gt; gold&gt; 3500永远不会被评估。 感谢所有回答并指出使用AND门而不是共享操作数的人!