首页 > 解决方案 > c#整数运算导致CA2233溢出警告

问题描述

我有以下代码触发 CA2233 警告“更正方法 Foo 中操作 'latitudeBam*90' 中的潜在溢出”

double Foo(int latitudeBam)
{
   var latitudeInDegrees = (latitudeBam * 90) / (double)int.MaxValue;
   return latitudeInDegrees; 
}

我不确定警告在哪里。是因为 latitudeBam 可能是接近 int.MaxValue 的值,因此溢出 int.MaxVlaue,还是因为与从 int.MaxValue 到 dobule 的转换有关?

标签: c#overflow

解决方案


您的第一个理论是正确的:您的计算可能会溢出int.MaxValue,因为它将任何当前的 int 值乘以 90。实际上,在调用您的方法时latitudeBam可能已经相等。int.MaxValue


推荐阅读