在未經檢查的上下文中,將值爲2147483647的整數加1,保證結果爲-2147483648?是否定義了C#/ .NET有符號整數溢出行爲?
例如,用下面的代碼
const int first = int.MaxValue;
int second = first;
if (second >= first)
{
Console.WriteLine("First check");
}
second++;
if (second >= first)
{
Console.WriteLine("Second check");
}
在C++中,這將是非常有效的兩個「首先檢查」和「第二檢查」要被打印,因爲優化可以重用的結果首先檢查第二個。
與C#一樣嗎?
您是否試過在編號中添加1並在調試器中檢查該編號..當涉及到.NET時,它應該產生'-2147483648' – MethodMan 2014-10-06 21:29:01
,實際上只有一個編譯器 – Steve 2014-10-06 21:30:44
第一個If Condition將命中爲True。 。第二個不會打印到控制檯'Second Check',因爲它變成了一個負整數,正如我在第一條評論中所述的那樣。那麼,你面臨的實際問題是什麼 – MethodMan 2014-10-06 21:31:45