C++ 如果语句行为不端
C++ If statement misbehaving
我是一个新手(就像 2 周前一样开始学习编码(,我真的很感激一些帮助来解释为什么我的代码不起作用。 我写了一个简单的代码来计算概率。这不是真正重要的部分。代码需要一些用户输入,所以为了使其万无一失,我为各种错误的输入(错误的数据类型、数字太高、数字太低(编写了两个 if 语句来抛出错误消息并杀死程序。如果输入是正确的(意味着 if 语句的所有条件都不为真(,它应该调用函数 diceTwo(des(。 但是,如果我输入数字 8 - 这应该没问题 - 出于某种我无法弄清楚的原因 - 它会触发数字太高/太低 if 语句,所以无论我输入什么数字,该函数都不会被调用。
cin >> des;
if (cin.fail())
{
cin.clear();
cin.ignore(100, 'n');
cout << "Invalid input! Use only whole positive numbers!" << endl;
cout << "Try again." << endl;
return -1;
}
if (des> 12 || des< 1);
{
cout << "Invalid input!" << endl;
cout << "Remember the only possible values are from 2 to 12!" << endl;
cout << "Try again." << endl;
return -1;
}
diceTwo(des);
cout << "The probability of this roll is " << x << "%" << endl;
这是制造麻烦的部分。我已经尝试将有问题的if语句分成两部分(一个用于<1,一个用于>12(,或者为des>1&& des<12添加新的if语句来调用该函数,但没有一个起作用。我之前使用过几次if语句为用户输入提供万无一失,总是运行良好,所以这次我似乎真的找不到问题所在。任何人都可以告诉我如何解决它吗?
if 语句后有一个分号。仔细观察:
if (des> 12 || des< 1); //<----- semi colon
{
cout << "Invalid input!" << endl;
cout << "Remember the only possible values are from 2 to 12!" << endl;
cout << "Try again." << endl;
return -1;
}
分号终止 if 语句,以便程序继续到下一行,这恰好是无效的输入行。去掉分号,你就是金:)
错误地添加了 ; in if
if (des> 12 || des< 1);
相关文章:
- 此增量后语句是否会导致未定义的行为?
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 如何在C++中为 if 和 else 语句定义新行为
- C++ if 语句将条件设置为 true 和循环中的 OR-ing 条件之间的行为差异
- C++ 如果语句行为不端
- 在 IF 语句中比较 int 时出现奇怪的行为
- arr[i] = i++ 和 i = i + 1 语句在 C 和 C++ 中的行为
- 根据数据包类型更改行为,避免开关语句
- C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助
- 编译器之间在丢弃的 if constexpr(false) 语句中实例化模板的行为不一致
- 当我通过删除临时节点来释放内存时,我会得到读取访问违规行为.但是只有当我返回错误语句时
- C :在控制语句之后,循环的行为不同
- C++中的神秘:函数调用行为不端只是因为存在另一个函数调用,即使它们是不相关的
- 当C/C++程序切换语句转到未定义的大小写并且缺少默认值时,它的正确行为是什么:
- 纠正涉及具有可变变量的表达式的琐碎语句的行为
- C++:return 语句行为怪异
- 怪异的if语句行为
- searchtree类的insert函数行为不端
- 是什么导致互斥对象行为不端
- 为什么string::substr行为不端