见标题。 1==(int)0.5*2
计算结果为false,但1==((int)0.5*2)
计算结果为true。但是(1==(int)0.5)*2
会出错,因此第一个表达式不会被解析为此。不知何故,1==((int)0.5*2)
中的额外括号正在改变演员和乘法的优先级。
到底究竟是什么原因造成的?这应该发生还是解析错误?
答案 0 :(得分:1)
这就是表达式的样子:
1 == 0.5*2 as int //--> true
1 == (int)(0.5*2) //--> true
这一个:
1==(int)0.5*2
将false
作为(int)0.5 == 0
而且这一个:(1==(int)0.5)*2
完全没有意义,因为你试图将false
(参见前面的例子)乘以2,这是不允许的