DOBON.NETプログラミング道掲示板

■35544 / 1階層)  C#のlong型でオーバーフローになる
□投稿者/ Hongliang 大御所(648回)-(2023/11/20(Mon) 12:19:23)
  • アイコン>  ans = 50000 * 50000; ・・・50000と入力した時点でオーバーフローになります。
    1. C#において、接尾辞のない整数値は、intとして扱われます。
    2. int同士の演算はintを返します。
    この仕様のため、50000 * 50000はintで計算され、intの上限である約21億を超える25億となってオーバーフローになります。

    接尾辞Lを付けるとかします。
    ans = 50000L * 50000;
    // 1つ目の50000はlong型になり、long * intはlong型を返します。

    50000が変数なら、明示的にキャストするという方法もあります。
    int x = 50000;
    ans = (long)x * x;
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←C#のlong型でオーバーフローになる /つき →Re[2]: C#のlong型でオーバーフローになる /つき
 
上記関連ツリー

Nomalアイコン C#のlong型でオーバーフローになる / つき (23/11/20(Mon) 11:56) #35543
Nomalアイコン C#のlong型でオーバーフローになる / Hongliang (23/11/20(Mon) 12:19) #35544 ←Now
  └Nomalアイコン Re[2]: C#のlong型でオーバーフローになる / つき (23/11/20(Mon) 13:15) #35545

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -