溢出行爲相同的程序我在.net 3.5運行一個程序使用C#當我運行這個程序在C#中的正常工作差異在C#和VB.Net
try
{
int i = 2147483647;
Console.WriteLine((i * 100/i).ToString());
Console.ReadLine();
}
catch (Exception)
{
throw;
}
,我沒有得到一個異常(輸出「0」)。但是,當我在VB.Net運行這個程序是導致"Arithmetic operation resulted in an overflow"
例外
Try
Dim i As Integer = 2147483647
Console.WriteLine((i * 100/i).ToString())
Console.ReadLine()
Catch ex As Exception
Throw
End Try
爲什麼這兩種語言之間的不同的行爲?
也許因爲VB.NET會默認檢查溢出,而C#不會呢? – BoltClock
順便說一下,*沒有*關於BODMAS/PEMDAS意味着答案應該是0 - 這是C#如何執行溢出的結果。在這種情況下,(i * 100)= - 100。 –
@MichaelBray:我的解釋是,這是一個關於'(i * 100)/ i'和'i *(100/i)'的問題...... –