我有一个if字段包含一个简单的表达式,我无法找出导致问题的原因,无论使用什么数字都会产生语句
if (pos != string::npos)
{
mystring.erase (0,10);
{
int numb;
istringstream(mystring)>>numb;
cout << numb << endl; //to check the numb integer (its equals 2)
if (numb != 1,2,3)
{
cout << "Please attach a valid priority to this ticket" << endl;
}
else
cout << "nice one" << endl;
出于某种原因(我无法弄清楚),该程序返回&#34;请为此票证附加有效优先级&#34;不管麻木是什么。
非常感谢帮助!
答案 0 :(得分:5)
if (numb != 1, 2, 3)
应该是:
if (numb != 1 && numb != 2 && numb != 3)
你写的内容被解析为:
if ((numb != 1), 2, 3)
这使用逗号运算符,它计算每个参数并返回第二个参数。所以它相当于:
if (3)
答案 1 :(得分:1)
// read a ~ b as "a is equivalent to b"
(numb != 1,2,3) ~ ((numb != 1),2,3) ~ (2,3) ~ 3
因此,您的情况始终如此。您需要将逻辑结果(布尔值)与&&
(和)或||
(或)结合起来,例如:
if (numb < 1 || numb > 3)
答案 2 :(得分:1)
您可能收到了编译器的警告......如果不是,请检查警告参数。 逗号运算符丢弃先前操作数的结果,并仅返回最后一个操作数。 在这种情况下,if与:
相同if (3)
当然,这不是你想要的。 在您的情况下,如果您只想检查整数是否不在1到3区间内,您可以这样检查:
if (num < 1 || num > 3)