2 oyilan oYiLan 于 2015.07.26 19:31 提问

(1.5==(1.0||1.5)?1:2)为什么返回2呢?
c++

C++里的,好奇怪,(1.5==(1.0||1.5)?1:2)为什么返回2呢?

6个回答

bdmh
bdmh   Ds   Rxr 2015.07.26 19:42
已采纳

1.0||1.5返回是bool值和1.5不相等,所以是2

shangyu0801
shangyu0801   2015.07.26 19:44

这句可以翻译为
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中,这句话应该会报错。

chen4588729
chen4588729   2015.07.26 20:00

对于或逻辑1.5==1可以执行,不用判断后边的1.5==1.5,所以为2

u010885554
u010885554   2015.07.26 20:14

对于这样的复杂的运算符判断,要根据运算符优先级一步一步计算。因为括号的优先级最高,因此先执行(1.0||1.5),显然为真,也就是(1.0||1.5)=1,
然后计算1.5==1,结果为假,应该返回冒号后边的的表达式,所以结果为2

u011489056
u011489056   2015.07.26 20:20

首先,要搞明白三目运算符的运算顺序,其次再去运算结果。

ze631863
ze631863   2015.07.27 13:09

你那样写是有错误的,你可以试试这样写:(1.5==1.0)||(1.5==1.5)?1:2

Csdn user default icon
上传中...
上传图片
插入图片