我有一个三元运算符,它总是返回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);
只是检查一下情况。