int16_t s;
uint32_t ui = s;
将int16_t
值转换为uint32_t
值编译器的结果是否依赖?如果没有,那么规则是什么?
答案 0 :(得分:6)
结果是明确的;非负值保持不变,负值以模2 ^ 32减少。但是,需要{strong>完全大小类型(如int16_t
和uint32_t
)的情况非常罕见。除了int
和unsigned long
之外,其他任何内容都不需要:这些类型的至少位数与int16_t
和uint32_t
以及与int16_t
和uint32_t
不同,它们在任何符合要求的实施中都必须存在。如果你真的想要性感的新尺寸类型,至少可以使用int_least16_t
和uint_least32_t
来实现便携性。