C++ &引用;如果;即使条件为';t遇见

C++ &引用;如果;即使条件为';t遇见,c++,C++,正如您在下面看到的,int result应该得到赋值1,如果int output是7或11。然而,即使在模拟中,我运行的结果是9,if语句运行时却没有结果,并将结果的值赋值为1 问题是,我不确定到底出了什么问题,因为语句中的其他代码没有运行,只有结果整数被赋值 #include <iostream> #include <algorithm> #include <ctime> #include <string> using namespace st

正如您在下面看到的,
int result
应该得到赋值1,如果
int output
是7或11。然而,即使在模拟中,我运行的
结果
是9,if语句运行时却没有结果,并将
结果
的值赋值为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;}

编辑:我真不敢相信我竟然忽略了这么简单的事情。我一开始没有指定起始值。谢谢大家,问题解决了。

如果条件为真,结果设置为1,那么很多都是真的。但在另一种情况下,结果的内容是未定义的——因此它可以是任何内容,甚至允许编译器作为优化的一部分随意修改它。您应该在其声明中初始化结果,或者添加一个else分支,将其设置为可选值。

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


如果您的If运行,它将用1覆盖它;如果它不运行,则打印随机垃圾(碰巧是1)。

无需进行与答案内容相同的编辑。这就是答案所在。提示:启用适当级别的编译器警告(如gcc和clang的
-Wall-Wextra-pedantic
),并修复所有警告。编译器会直接告诉你这个问题。@Barmar我实际上在检查答案之前进行了编辑。但是你是对的。如果你自己找到了答案,你应该把它作为答案发布,而不是对问题的编辑。
The Outcome is 9
The Result is 0
The Outcome is 9
The Result is 1