我想在C++代码中比较这三个术语

i want to compare this three terms in C ++ code

本文关键字:术语 三个 比较 C++ 代码      更新时间:2023-10-16

如果C++中有这样的代码。

j = 5;
k[i] = j * ((k[i] > 0));

然后,如果k [i]1,那么(k [i]> 0)就变成了1

所以最后一个k [i]5.

如果k [i]-1,那么(k [i]> 0)就变成了0

所以最后一个k [i]为零。

然后我想知道

j = 5;
k[i] = j * ((10 > k[i] > 0));

这里

如果k[i] = 5,则k[i]大于0且小于10

这么(10> k [i]> 0) = 1j * 1 = 5

我可以同时使用三个比较运算符吗?

谢谢。

它会编译,但它不起作用。你需要写(10 > k[i] && k[i] > 0)

没有 c++ 不支持同时将变量与多个值进行比较。 令人困惑的是,您的比较甚至可以编译,但它不会做您认为的那样。例如:

#include <iostream>
#include <string>
int main()
{
int b = 21;
if ( 5 < b < 20 )
{
std::cout << "OK";
}
else
{
std::cout << "Fail";
}
}

将编译(带有警告(,但将打印OK而不是Fail.正在发生的事情是,您实际上拥有:

if ( (5 < b) < 20 )

其计算结果为:

if ( true < 20 )

true小于 20,因此比较返回 true。您需要完整说明要执行的比较:

#include <iostream>
#include <string>
int main()
{
int b = 21;
if ( (5 < b) && (b < 20) )
{
std::cout << "OK";
}
else
{
std::cout << "Fail";
}
}