【发布时间】:2015-09-27 07:42:57
【问题描述】:
当我转换时:
int B=1;
boolean A=B;
它给出错误:不兼容的类型,这是真的
但是当我写这段代码时:
int C=0;
boolean A=C==1;
它给出了错误 而如果我将 C 的值更改为 1,它会给出 true。 我不明白编译器是怎么做的。
【问题讨论】:
当我转换时:
int B=1;
boolean A=B;
它给出错误:不兼容的类型,这是真的
但是当我写这段代码时:
int C=0;
boolean A=C==1;
它给出了错误 而如果我将 C 的值更改为 1,它会给出 true。 我不明白编译器是怎么做的。
【问题讨论】:
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 是一个布尔值,这是正确的声明
【讨论】:
它首先检查c==1,并将结果分配给A。
因为 C 不是 1,所以表达式值导致分配给 A 的 false
【讨论】:
C==1 是一个表达式,其结果为boolean(它是比较运算符)。如果C 等于1,则返回true,否则返回false。
因此boolean A=C==1; 是boolean 值对boolean 变量的有效赋值。
【讨论】: