首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MISRA 2004: 10.1/R警告

MISRA 2004: 10.1/R警告
EN

Stack Overflow用户
提问于 2013-06-14 20:49:40
回答 2查看 276关注 0票数 0
代码语言:javascript
复制
S32 pLeftX;
pLeftX = pos.x - 1; //Getting a Misra 2004: 10.1/R warning for this.

这里,pos.x是int类型。

EN

回答 2

Stack Overflow用户

发布于 2013-06-17 14:17:59

如果pos.x真的是int,而S32是带符号的整数类型,那么你的静态分析器就失败了。

规则10.1允许隐式类型转换为相同符号的更宽类型。如果pos.x为int,则表达式中的类型为int + int。结果是一个int,它总是经过签名的。然后将其隐式转换为32位带符号的int,这很好。

票数 1
EN

Stack Overflow用户

发布于 2015-09-06 19:18:13

我首先看一下这个工具是如何配置的。int的大小是多少?根据C90标准,int的大小是由实现定义的,并且可以是16位或更大。假设S32是32位有符号整数类型,我的理解是:

  1. 如果int的大小是32位,则没有问题。
  2. 如果int的大小大于32位,则问题是存在到较窄类型的隐式转换。
  3. 如果int的大小小于32位,则问题是赋值的右侧是复杂表达式,其结果被隐式转换为更宽的类型。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17108855

复制
相关文章

相似问题

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