溢出行为相同的程序我在.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)'的问题...... –