我读了一个源代码, 有一个声明如下: uint32 XYZ; ... XYZ =(uint32)0x0000000U。
我想知道演员是否必要,是XYZ = 0U好吗?
由于
答案 0 :(得分:2)
整数常量0U
理论上可以是64位的无符号整数。如果是这样,演员是必要的,因为MISRA-C(2012 10.3)不允许隐式转换为更窄的类型。但是,在32位CPU和更小的CPU上不需要强制转换。
另一种方法是编写uint32_t XYZ = UINT32_C(0);
,在这种情况下,编译器会自动为整数常量选择合适的类型。