「L」接尾辞がある場合とない場合で乗算演算の結果が異なるのはなぜですか?
長い値を含む数値を乗算する場合、「L」を追加すると" 数値リテラルの接尾辞は、正確な結果を得るために重要です。これは、数値リテラルのデフォルトのデータ型が int であり、long よりも範囲が狭く、整数オーバーフローが発生する可能性があるためです。
"L" 接尾辞が付いた Long 値
long oneYearWithL = 1000*60*60*24*365L;
接尾辞「L」のない長い値
long oneYearWithoutL = 1000*60*60*24*365;
バイナリ表現
2 つの値の違いは、バイナリ表現で確認できます。
oneYearWithL : 011101010111101100010010110000000000 oneYearWithoutL: 01111111111111111111111111111111
oneyearWithL の最上位ビットの「1」は正の値を示し、oneyearWithoutL の最上位ビットの「0」は負の値となるオーバーフローを示します。
結論
long 値を含む数値を乗算する場合、接尾辞 "L" を明示的に使用すると、結果が 64 ビットの long 値として正確に格納されます。 「L」接尾辞の追加を怠ると、整数オーバーフローによる誤った計算が発生する可能性があります。
以上が長い値の場合、乗算演算に接尾辞 "L" を追加することが重要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。