gpt4 book ai didi

c# - 无溢出检查的整数运算

转载 作者:行者123 更新时间:2023-12-02 21:02:12 25 4
gpt4 key购买 nike

您好,我刚刚对我的代码运行了静态代码分析,但我不断收到错误

"Integer Operation Without Overflow Check"

有人可以帮我解决这个问题或者告诉我它到底意味着什么吗?我已经尝试使用检查关键字来解决此问题,但当我运行代码时它仍然出现。

List<String> emailList = new List<string>();

if (tbRecipients.Text.Contains(','))
{
string[] splits = tbRecipients.Text.Split(',');

for (int i = 0; i < splits.Length; i++)
{
if (splits[i].Contains(';'))
{
emailList.AddRange(splits[i].Split(';').ToList());
}
else
{
emailList.Add(splits[i]);
}
}
}

ASPX

<asp:TextBox ID="tbRecipients"  runat="server"  ></asp:TextBox>  

最佳答案

您收到的消息表明您可能会在 int 上遇到“溢出” ,那是因为int位于C#32 bit这样你只能存储小于 2^31 的数字。所以VCG告诉你,在做几个i++的同时你最终可能会得到 i = 2^31这会溢出你的 int并产生意外的代码行为。

只有在 splitted.Length == int.MaxValue 的情况下,这才可能发生在您的代码中自 splitted是一个数组并且 Length属性是 int ,所以当你得到i == int.MaxLength时循环将评估 i == splitted.Length并将转到i++这会溢出。

但是你的循环显示 i < splitted.Length这样i == splitted.Length 不会发生。

底线:我认为VCG发现了一条可疑的线,但没有什么可担心的。
希望这会有所帮助,祝您编码愉快。

关于c# - 无溢出检查的整数运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37710680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com