【发布时间】:2021-03-22 21:25:02
【问题描述】:
我有这个总是返回 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 总是为真,即使在等待时间为 0 的开始时 awayPeriodThreshold 为 5;
我该如何解决这个问题?
非常感谢您的帮助。
【问题讨论】:
-
看起来你从 Python 中得到了关于三元运算符的想法?如果这是真的,我建议你忘记从 Python 中学到的一切,像学习第一语言一样学习 C++。这比试图在这两种语言之间进行比较要容易得多。
标签: c++ googletest conditional-operator