若语句不起作用,我希望它能起作用
If statement not working how I want it to
以下C++代码:
if (a != '0.5' || a != '0.6')
{
cout << "The answer is neither 0.5 nor 0.6 " << 'n';
}
我也试过
if ((a != '0.5') || (a != '0.6'))
{
cout << "The answer is neither 0.5 nor 0.6 " << 'n';
}
并尝试
if ( !(a== '0.5') || !(a==0.6)
{
cout << "The answer is neither 0.5 nor 0.6 " << 'n';
}
接收来自用户的数字,并检查该数字是0.5还是0.6;如果是,它应该作为一个false语句执行,但如果是任何其他数字,则应该作为true执行。然而,它保持执行为true,尽管当我输入0.5或0.6时,它应该执行为false。当我使用else-if语句时,情况就不同了,它在其中运行良好,即:
if (a != 0.5)
{
//what to do if true.
}
else if (a != 0.6)
{
//What to do if this is true and the first id wrong.
}
else
{
//What to do if none are true.
}
为什么不能在if语句中执行?
逻辑错误。您当前正在检查一个数字是否同时不是0.5或0.6;所有数字都会通过测试。您需要将逻辑或(||
)替换为逻辑和(&&
)。
此外,您需要删除数字中的单引号,否则您将创建一个具有实现定义值的多字符文字。
if (a != 0.5 && a != 0.6)
{
cout << "The answer is neither 0.5 nor 0.6 " << 'n';
}
a应该是浮点还是字符串?无论哪种方式,如果是使用双引号的字符串,此语法都是错误的"0.5"。不要将(in)相等与float/double进行比较,因为内部表示法无法如您所期望的那样工作,请查看如何正确、标准地比较float。
a的类型是什么?
std::字符串
假设:
std::string a;
std::cin >> a;
则以下代码起作用:
if (a == "0.5" || a == "0.6")
{
// Do something when it's true
}
else
{
// Do something when it's false
}
虽然"0.5"answers"0.6"是const char*,但它们将转换为std::string。
常量字符*
char a[BUFSIZE];
std::cin >> a;
if (strcmp(a, "0.5") == 0 || strcmp(a, "0.6") == 0)
{
// Do something when it's true
}
else
{
// Do something when it's false
}
您可以使用strcmp来比较c样式字符串
浮动/双
当您比较浮动时,可能会遇到精度问题。您可以编写一些函数或Float类来解决这个问题。像这样:
const double EPS = 1e-8;
inline bool FloatEqual(const double lhs, const double rhs)
{ return std::fabs(rhs-lhs) <= EPS; }
int main()
{
double a;
std::cin >> a;
if (FloatEqual(a, 0.5) || FloatEqual(a, 0.6))
{
// Do something when it's true
}
else
{
// Do something when it's false
}
}
顺便说一下
有趣的是,发现以下语句是相等的
if (a == "0.5" || a == "0.6")
if (!(a != "0.5" && a != "0.6"))
删除0.5和0.6之间的单引号,您应该使用&;(AND)而不是||(OR),即:if (a != 0.5 && a != 0.6)
如果a
是一个字符,那么当你做一些事情时会发生奇怪的事情,比如:
char a = '0.5';
cout << "A: " a << endl;
这将输出(在我的编译器上,不能确定任何其他):
A: 5
和:
char a = '0.5';
if (a == '5')
cout << "yey" << endl;
else
cout << "oops" << endl;
这将输出:
yey
但我认为这种行为是不明确的(我不确定)。无论如何,它不会做你认为会做的事。
其次,我认为你的逻辑是错误的:
你在说:
如果不是0.5
或不是0.6
我想你指的是
如果不是0.5
且不是0.6
if (a != '0.5' && a != '0.6')
必须是
if (a != 0.5 && a != 0.6)
- 我的神经网络不起作用 [XOR 问题]
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么这段代码不起作用,我该如何解决?
- 我正在开发服务器,ip作为参数传递不起作用
- 嘿,我正在尝试将此c ++转换为javascript,但有些东西不起作用
- 编译在我的 Mac 上工作,但在集群 (Linux) 上不起作用
- 为什么我的数组双精度函数不起作用?
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- N-queen问题:无法弄清楚为什么我的解决方案不起作用
- C++ - 块不移动,我的数组不起作用
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- EOF有更安全的替代方案吗?它在我的情况下不起作用
- 重载运算符 (<<) cout 在 c ++ 中不起作用,当我互相减去两个矩阵时不起作用
- 我正在尝试解决一个需要数组总和值但代码不起作用的问题,我想做这样的事情
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 若语句不起作用,我希望它能起作用
- 我的加载图像不起作用 - 我需要知道为什么