"如果"即使条件不满足,语句也会运行

时间:2016-01-09 00:08:52

标签: c++

正如您在下面所看到的,如果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

编辑:我真的无法相信我忽略了这么简单的事情。我没有首先分配一个起始值。谢谢大家,问题解决了。

2 个答案:

答案 0 :(得分:4)

如果条件为真,则将结果设置为1,这是真的。但在另一种情况下,结果的内容是未定义的 - 所以它可以是任何东西,甚至允许编译器随意修改它作为优化的一部分。您应该在其声明中初始化结果,或者在您将其设置为替代值的其他分支处添加。

答案 1 :(得分:3)

您没有初始化结果,因此内容是随机垃圾

如果你的IF运行,它会用1覆盖它;如果它没有运行,你打印随机垃圾(碰巧是1)。