首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告--与指针组合的算术表达式中的可疑截断

警告--与指针组合的算术表达式中的可疑截断
EN

Stack Overflow用户
提问于 2011-10-10 16:50:35
回答 3查看 2.7K关注 0票数 2

我正在对我的源代码进行静态代码分析(使用Gimpel - Lint)。在代码分析中,我收到了一个警告:“算术表达式与指针结合时出现可疑截断”。

以下是分析报告所说的:

source\interp.cpp(142):错误679:(警告-算术表达式中与指针组合的可疑截断)

代码语言:javascript
复制
    py[ulIndex] = y[ulIndex+1] - y[ulIndex];

这里的py,y是具有相同大小的双精度数据类型的动态数组,但在代码分析中仍然会出现上述代码行的警告。

有人能帮我解决这个问题吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-10 17:02:16

这可能是因为您使用ulIndex+1尝试将int添加到无符号的长整型中

代码语言:javascript
复制
py[ulIndex] = y[ulIndex+UL1]-y[ulIndex];

或者,这可能取决于您定义py和y数组的方式。

票数 2
EN

Stack Overflow用户

发布于 2011-10-10 17:13:32

这可能是因为您使用无符号表达式作为数组索引(或在结果指针算法中),对于大多数C实现,IIRC应该是有符号表达式。

C标准没有定义索引表达式应该是有符号的还是无符号的,但大多数(all?)当前的C实现使用带符号的索引。

编辑:

您的checker here有一个消息引用。我认为检查器对从unsigned intint的隐式强制转换发出警告,这可能会导致信息丢失。尝试向int添加显式强制转换,看看消息是否会更改/消失。

票数 0
EN

Stack Overflow用户

发布于 2011-10-10 17:33:27

数组索引的correct类型是size_t。您将收到一条警告,因为size_t(ulIndex+1)可能为零,而不是size_t(ulIndex)+1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7710428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档