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