问题描述
- (1.5==(1.0||1.5)?1:2)为什么返回2呢?
-
C++里的,好奇怪,(1.5==(1.0||1.5)?1:2)为什么返回2呢?
解决方案
1.0||1.5返回是bool值和1.5不相等,所以是2
解决方案二:
这句可以翻译为
if(1.5 == (1.0||1.5))
{
//表达式值为1
}else
{
//表达式值为2
}
注意 1.5 == (1.0||1.5)也就是 1.5 == 1 也就是false。1.0||1.5是一个布尔表达式,值为1
故而应该执行else,表达式值为2.
你特意说在C++中,其实在c中也是这样。在java中,这句话应该会报错。
解决方案三:
对于或逻辑1.5==1可以执行,不用判断后边的1.5==1.5,所以为2
解决方案四:
对于这样的复杂的运算符判断,要根据运算符优先级一步一步计算。因为括号的优先级最高,因此先执行(1.0||1.5),显然为真,也就是(1.0||1.5)=1,
然后计算1.5==1,结果为假,应该返回冒号后边的的表达式,所以结果为2
解决方案五:
首先,要搞明白三目运算符的运算顺序,其次再去运算结果。
解决方案六:
你那样写是有错误的,你可以试试这样写:(1.5==1.0)||(1.5==1.5)?1:2
时间: 2024-09-12 12:54:58