失败的三元运算符



我有一个三元运算符,它总是返回true:

int waitingTime = 0;
int awayPeriodThreshold = 5;
bool myOperator= 0? (waitingTime < awayPeriodThreshold) : 1;

我在GoogleTest EXPECT_EQ中使用它来比较两个布尔值。

我有一个测量时间的程序,当时间没有达到给定的阈值时(在这种情况下是5秒(,输出为0,当时间大于或等于5秒时,输出为1。这是正确的,但当我尝试使用这个:

//at the beginning
bool isHigherThanTimeThreshold = 0
EXPECT_EQ(isHigherThanTimeThreshold, myOperator) //Test fails
// after lets say 10 seconds, isLowerThanTimeThreshold changes to 1
EXPECT_EQ(isHigherThanTimeThreshold, myOperator) //Test passes

它总是失败,因为myOperator总是true,即使在等待时间为0的开始,awayPeriodThreshold也是5;

我该怎么解决这个问题?

非常感谢你的帮助。

bool myOperator= 0? (waitingTime < awayPeriodThreshold) : 1;

bool myOperator= 1;

因为CCD_ 1总是被视为假。

C++中的三元运算符表示CCD_ 2。

因此,你应该这样写:

int myOperator= (waitingTime < awayPeriodThreshold) ? 0 : 1;

请注意,应该使用int(或char等其他整数类型(来存储整数。

你可以像一样写作

bool myOperator = !(waitingTime < awayPeriodThreshold);

bool myOperator = (waitingTime >= awayPeriodThreshold);

只是检查一下情况。

相关内容

  • 没有找到相关文章

最新更新