S32 pLeftX;
pLeftX = pos.x - 1; //Getting a Misra 2004: 10.1/R warning for this.
此处,pos.x
的类型为int。
答案 0 :(得分:1)
如果pos.x
确实是int
且S32
是有符号的int类型,那么您的静态分析器就会被破坏。
规则10.1允许隐式类型转换为更广泛类型的相同签名。如果pos.x
为int,则表达式中的类型为int + int
。结果是int
,它始终是签名的。然后将其隐式转换为32位signed int,这很好。
答案 1 :(得分:1)
我首先看看该工具是如何配置的。 int的大小是多少?根据C90标准,int的大小是实现定义的,可以是16位或更大。假设S32是32位有符号整数类型,我的理解是: