7

よくわかりません!

今日は11月3日です

DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;

shazbotは-1294967296に出てきます

は???

4

2 に答える 2

41

shazbotである可能性がありますがlong、どちらでもない1000000000か、そうではありませんDateTime.Day。したがって、C#はint最初に乗算を実行し(これによりオーバーフローが発生します)、次にそれをにキャストしてlongに格納しshazbotます。

結果が必要な場合は、次のようlongに、そのうちの1つをaにします。long

long shazbot = 1000000000L * DateTime.Day;

l編集:の代わりにを使用すると、C#で警告が表示されますL。修理済み。

于 2010-11-03T14:14:25.113 に答える
1

このように長くキャストします:

long shazbot = 1000000000L * DateTime.Day;
于 2010-11-03T14:13:33.630 に答える