我正在对我的源代码进行静态代码分析(使用Gimpel - Lint)。在代码分析中,我收到了一个警告:“算术表达式与指针结合时出现可疑截断”。
以下是分析报告所说的:
source\interp.cpp(142):错误679:(警告-算术表达式中与指针组合的可疑截断)
py[ulIndex] = y[ulIndex+1] - y[ulIndex];这里的py,y是具有相同大小的双精度数据类型的动态数组,但在代码分析中仍然会出现上述代码行的警告。
有人能帮我解决这个问题吗?
提前谢谢。
发布于 2011-10-10 17:02:16
这可能是因为您使用ulIndex+1尝试将int添加到无符号的长整型中
py[ulIndex] = y[ulIndex+UL1]-y[ulIndex];或者,这可能取决于您定义py和y数组的方式。
发布于 2011-10-10 17:13:32
这可能是因为您使用无符号表达式作为数组索引(或在结果指针算法中),对于大多数C实现,IIRC应该是有符号表达式。
C标准没有定义索引表达式应该是有符号的还是无符号的,但大多数(all?)当前的C实现使用带符号的索引。
编辑:
您的checker here有一个消息引用。我认为检查器对从unsigned int到int的隐式强制转换发出警告,这可能会导致信息丢失。尝试向int添加显式强制转换,看看消息是否会更改/消失。
发布于 2011-10-10 17:33:27
数组索引的correct类型是size_t。您将收到一条警告,因为size_t(ulIndex+1)可能为零,而不是size_t(ulIndex)+1
https://stackoverflow.com/questions/7710428
复制相似问题