当我转换时:
int B=1;
boolean A=B;
它给出错误:不兼容的类型,这是真的
但是当我写这段代码时:
int C=0;
boolean A=C==1;
它给出了错误 而如果我将C的值更改为1则表示真实。 我不明白编译器是如何做的。
答案 0 :(得分:4)
int C=0;
boolean A=C==1;
编译器首先给C一个零。
Variable : C
Value : 0
现在分配声明,
我们知道赋值语句首先评估正确的部分,然后将其赋予左侧。
正确的部分==> C == 1
在这里,这是一个评估为true
或false
的表达式。在这种情况下,它为c is 0.
所以R.H.S是假的。
现在这被分配给L.H.S,即A。
A = ( C == 1 ) ==> A = false
由于A
是一个布尔值,这是一个正确的陈述
答案 1 :(得分:3)
C==1
是一个表达式,其结果为boolean
(它是比较运算符)。如果true
等于1,则返回C
,否则返回false
。
因此,boolean A=C==1;
是对boolean
变量的boolean
值的有效分配。
答案 2 :(得分:2)
首先检查c==1
,然后将结果分配给A
。
因为C
不是1所以表达式值导致为false,分配给A