目前我正在使用:
int a=10;
if(a=20)
printf("TRUE");
else
printf("false");
Run Code Online (Sandbox Code Playgroud)
以C为单位打印的值TRUE.
但是在java的情况下:
int a=10;
if(a=20)
System.out.println("TRUE");
else
System.out.println("FALSE");
Run Code Online (Sandbox Code Playgroud)
我将得到关于不兼容类型的编译时错误.
Ale*_*s G 13
原因是在C中没有特定的类型boolean- 相反,任何非0整数的计算结果为布尔值"true".因此在你的C代码中:
if(a=20)
Run Code Online (Sandbox Code Playgroud)
a 被赋值为20,非0 - 并且条件被评估为 true
在java中,有一个基本类型boolean,条件内部的值if必须是这种类型.
a=20
Run Code Online (Sandbox Code Playgroud)
在Java中分配20 a并返回评估的最终结果integer value 20,但是boolean预期类型- 因此您将获得有关不兼容类型的编译时错误.
a但是,如果要与20 进行比较,则需要==在C和Java中使用运算符:
if(a == 20)
Run Code Online (Sandbox Code Playgroud)
这将在C和Java中编译,并以两种语言打印FALSE.
小智 7
您需要更换=有==.
= 是一个赋值运算符
int a=10;
if(a==20){
System.out.println("TRUE");}
else{
System.out.println("FALSE");}
Run Code Online (Sandbox Code Playgroud)
这应该工作正常.
编辑:
在C中,赋值的返回整数值(在本例中为20)是一个正整数,其计算结果为true.在java中,需要一个布尔值.
(请参阅Aleks G提供的更全面的答案)
| 归档时间: |
|
| 查看次数: |
18981 次 |
| 最近记录: |