Java 具有奇怪行为的左移位运算符
只是出于好奇,当我做以下事情时:Java 具有奇怪行为的左移位运算符,java,Java,只是出于好奇,当我做以下事情时: public static void main(String... args){ byte a = 2; byte b = 1; byte c = (byte) a<<b; System.out.println(c); } 只要包含括号,一切都正常工作,左移位运算符成功地得到答案4。 这是什么魔法 简单byte“这是什么魔法?”你是在问左移位运算符做什么?还是你在问演员们都做些什么?巫术也不是。没有括号,表示(byt
public static void main(String... args){
byte a = 2;
byte b = 1;
byte c = (byte) a<<b;
System.out.println(c);
}
只要包含括号,一切都正常工作,左移位运算符成功地得到答案4
。
这是什么魔法 简单
byte“这是什么魔法?”你是在问左移位运算符做什么?还是你在问演员们都做些什么?巫术也不是。没有括号,表示(byte)aint t=a@ShayanAhmad除非运算符的两侧(操作数)都提升为int
,否则为True。a
到字节的转换是多余的,是不可操作的,因为a
已经是字节了。一个好的IDE实际上会提醒您这一点。这两个byte
值随后被提升为int
在Simplebyte“这是什么魔法?”之前,您是否在询问左移位运算符的作用?还是你在问演员们都做些什么?巫术也不是。没有括号,表示(byte)aint t=a@ShayanAhmad除非运算符的两侧(操作数)都提升为int
,否则为True。a
到字节的转换是多余的,是不可操作的,因为a
已经是字节了。一个好的IDE实际上会提醒您这一点。这两个字节
值随后在
public static void main(String... args){
byte a = 2;
byte b = 1;
byte c = (byte) (a<<b); //the parenthesis were added only.
System.out.println(c);
}