查看这个答案并知道0 是一个八进制常数:
对于十六进制[常量 [和八进制根据注释]],它是值可以适合的第一种类型:
int
,unsigned int
,long
,unsigned long
,long long
,unsigned long long
因此,我推断这不需要演员表:
size_t foo = 0;
但是,由于严格的 MISRA-C lint 工具,我收到一条关于非法隐式类型转换的消息 - MISRA-C:2004 Rule 10.1。
是我的理解有误,还是工具有误?
(注意:我已经改成这样,size_t foo = 0U;
因为这比与 QA 争论要简单得多,但我想满足我自己的好奇心。)