<<当移位位的值大于数据类型的总位数时,移位运算符如何工作?
例如,
int i = 2;
int j = i<<34;
System.out.println(j);
Run Code Online (Sandbox Code Playgroud)
整数的大小是32位,但是我们正在移位34位.这是如何运作的?
使用下面给出的C代码(用Visual Studio编写):
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
float i = 2.0/3.0;
printf("%5.6f", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
产生输出:0.666667
但是当%5.6f更改为%5.20f时,输出将更改为:0.66666668653488159000
我的问题是为什么类似小数的输出的细微变化?
你速记的Java算术运算符的一个例子是a += 4;用于a=a+4;
在完整参考文献Java 2中,Herbert Schildt提到"Java运行时系统比它们的等效系统更有效地实现它们"
是什么让它的实现更有效率 a=a+4;