Ken*_*Y-N 6 c type-conversion misra
十六进制[常量[和根据意见]八进制],它是第一类型的值可以适应:
int,unsigned int,long,unsigned long,long long,unsigned long long
因此,我推断这不需要演员:
size_t foo = 0;
Run Code Online (Sandbox Code Playgroud)
但是,由于严格的MISRA-C lint工具,我收到有关非法隐式类型转换的消息 - MISRA-C:2004规则10.1.
我的理解是错误的,还是错误的工具?
(注意:我已经改变了,size_t foo = 0U;因为这比与质量保证争论要简单得多,但我想满足自己的好奇心.)
我不确定你想要实现什么目标,但是......
size_t需要类型size_t- 和大小(通常)无符号
因此,为了严格遵守,size_t foo = 0U;尽管使用可能更正确size_t foo = (size_t)0;
顺便说一句,关于 0 是十进制、八进制还是其他任何东西的讨论是无关紧要的……它仍然是零。
--
编辑添加:
尽管 MISRA C:2004 中不推荐使用有符号和无符号之间的显式转换(尽管这存在很大偏差),但对于 MISRA C:2012,规则 10.3 明确允许本质上有符号类型的非负整数常量表达式可以分配给本质上有符号类型的对象。无符号类型(如果其值可以用该类型表示)
这是一种标准的表达方式,表示您不需要 U
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |