我看了一段源码, 有这样的说法: uint32 XYZ; ... XYZ = (uint32)0x0000000U。
我想知道是否需要强制转换,XYZ = 0U 可以吗?
谢谢
最佳答案
整数常量0U
理论上可以是一个64位的unsigned int。如果是这样,则需要强制转换,因为 MISRA-C (2012 10.3) 不允许隐式转换为更窄的类型。但是,在 32 位和更小的 CPU 上不需要转换。
另一种方法是编写 uint32_t XYZ = UINT32_C(0);
,在这种情况下,编译器会自动为整数常量选择合适的类型。
关于c - 米斯拉-C : cast literal number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43056328/