超基礎的なことなのだが。。。

javaで30日をミリ秒で表した

long d = 1000 * 60 * 60 * 24 * 30


1,2592000000
2,Exceptionの発生
3,負数になる。

のどれでしょう?
正解は。。。。。↓




























































3の負数になるでした。
javaは数値リテラルは、int型になるため。
long d = 1000 * 60 * 60 * 24 * 30は
int d = 1000 * 60 * 60 * 24 * 30と同じ意味であり、オーバーフローしてしまう。


なので、この場合
long d= 1000L * 60L * 60L * 24L * 30L
//d == 2592000000
が正解になる。

この頃、こういった泥臭い(コンピュータアーキテクチャ)ことに触れてなかったため、かなりこの辺の感覚がなくなってしまった。
気お付けなければ。。