考虑操作:(7〉〉1)和1当我们放入print语句时,它工作:*系统输出打印输入((7〉〉1)&1);//作品 *但如果我们输入if条件,则会出现错误:
if((7〉〉1)&1)系统输出打印输入('此处');#显示错误
错误:不兼容的类型:如果((7〉〉1)&1)System.out.println(123);我不明白这可能是什么问题?因为同样的工作在C++。我试图给变量int赋值a=(7〉〉1)&1如果(a==1)系统输出打印输入('工程');//它在此处有效,但直接传递时无效
dkqlctbz1#
正如SmallPepperZ所说,在java中,if语句不接受任何参数,除了boolean原语类型,或者可以计算为boolean原语类型的语句。为了进一步解释SmallPepperZ的答案,您的第二个问题(要求使用变量a)的原因是,表达式的求值方式如下:
if
boolean
a
if( (7>>1)&1 == 1 ) if( 3 & 1 == 1 ) if( 3 & true )
您看到的错误应该如下所示:
The operator & is undefined for the argument type(s) int, boolean
要解决此问题,请在左侧的表达式周围添加一组括号
if( ((7>>1)&1) == 1 ) System.out.println("Here");
其通过以下方式进行评估:
if( ((7>>1)&1) == 1 ) if( ((3)&1) == 1 ) if( (3&1) == 1 ) if( 1 == 1 ) if( true )
e4yzc0pl2#
与C++不同,Java不会将整数1和0解释为与布尔值true和false等效有关详细信息,请参见Why boolean in Java takes only true or false? Why not 1 or 0 also?。
1
0
true
false
2条答案
按热度按时间dkqlctbz1#
正如SmallPepperZ所说,在java中,
if
语句不接受任何参数,除了boolean
原语类型,或者可以计算为boolean
原语类型的语句。为了进一步解释SmallPepperZ的答案,您的第二个问题(要求使用变量
a
)的原因是,表达式的求值方式如下:您看到的错误应该如下所示:
要解决此问题,请在左侧的表达式周围添加一组括号
其通过以下方式进行评估:
e4yzc0pl2#
与C++不同,Java不会将整数
1
和0
解释为与布尔值true
和false
等效有关详细信息,请参见Why boolean in Java takes only true or false? Why not 1 or 0 also?。