タグ

security-engineeringとjavaに関するItisangoのブックマーク (1)

  • NUM00-J. 整数オーバーフローを検出あるいは防止する

    Java の型において表現できる値の範囲は非対称(最小値の符号を反転させた値は、最大値より1大きい)であるため、単項マイナス演算子を最小値に適用した場合には整数オーバーフローが発生する。引数の絶対値を返すメソッド java.lang.math.abs() に int 型や long 型の最小値を与えた場合にも、整数オーバーフローが発生する。 数学的演算の結果が与えられた整数型で表現できない場合、Java のビルトイン演算子は、オーバーフローの発生を示すことなく演算結果をラップアラウンドさせる。この動作は、間違った計算結果や予期せぬ結果を招く可能性がある。たとえば、実システムにおいて、オーバーフローを適切に扱わなかったために compareTo メソッドの実装で問題となった例がある。compareTo メソッドの返り値は、ゼロであるか、符号が正負いづれかであるかにだけ意味があり、その絶対値に

    NUM00-J. 整数オーバーフローを検出あるいは防止する
    Itisango
    Itisango 2020/02/24
    "いかなる場合であっても、組み込みの整数演算子がオーバーフローやアンダーフローを起こすことはない。" 知らんかった! #Java
  • 1