正如您在下面所看到的,如果int result
只有7或11,则int outcome
应该被赋值为1.但是,即使在模拟中我运行了outcome
9,if语句仍然运行并将result
的值指定为1.
问题是,我实际上并不确定错误是什么,因为语句中的其他代码没有运行,只有结果整数会被赋值。
#include <iostream>
#include <algorithm>
#include <ctime>
#include <string>
using namespace std;
int main()
{
int bankroll=100;
int bet=1;
int die1[6]= {1,2,3,4,5,6};
int die2[6]= {1,2,3,4,5,6};
int outcome;
int point;
int result;
bool pointroll=false;
string resulttext;
random_shuffle(&die1[0],&die1[6]);
random_shuffle(&die2[0],&die2[6]);
outcome = die1[0] + die2[0];
cout << "The Outcome is " << outcome << endl;
cout << "The Result is " << result << endl;
if(outcome==7 || outcome==11)
{
resulttext="Win!";
result=1;
cout << "Am I running?" << endl;
}
cout << "The Outcome is " << outcome << endl;
cout << "The Result is " << result << endl;
return 0;}
这是输出:
The Outcome is 9
The Result is 0
The Outcome is 9
The Result is 1
编辑:我真的无法相信我忽略了这么简单的事情。我没有首先分配一个起始值。谢谢大家,问题解决了。
答案 0 :(得分:4)
如果条件为真,则将结果设置为1,这是真的。但在另一种情况下,结果的内容是未定义的 - 所以它可以是任何东西,甚至允许编译器随意修改它作为优化的一部分。您应该在其声明中初始化结果,或者在您将其设置为替代值的其他分支处添加。
答案 1 :(得分:3)
您没有初始化结果,因此内容是随机垃圾。
如果你的IF运行,它会用1覆盖它;如果它没有运行,你打印随机垃圾(碰巧是1)。