20260306_int同士の計算結果はintである(オーバーフローしてもlongにならない)
int型同士の計算結果はint型である。計算結果がint型の範囲を超えても、例えば自動でlong型に変換してくれるということはなく、オーバーフロー(エラーなし)として扱われるだけ。
そのため、計算結果がintの範囲を超える可能性がある場合は、計算時点でlong型として評価されるようにキャストするか、少なくとも一方のオペランドをlong型として定義する必要がある。
java
int a = 2147483647; //intの最大値
int b = 1;
long c = a + b; //int計算→long代入なので、結果は-2147483648
long d = (long)a + b; //計算自体がlong型で行われ、結果は2147483648