从int16_t转换为uint32_t

upd*_*liu 3 c c++

int16_t s;
uint32_t ui = s;
Run Code Online (Sandbox Code Playgroud)

int16_t值转换为uint32_t编译器依赖的值的结果是什么?如果没有,那么规则是什么?

Pet*_*ker 6

结果是明确的; 非负值保持不变,负值以模2 ^ 32减少.但是,在该情况下,确切的尺寸类型,如int16_tuint32_t需要是非常罕见的.除了intunsigned long这里之外真的不需要任何东西:这些类型至少具有和它们一样多的位int16_t,uint32_t并且,与它们不同,它们需要存在于任何符合要求的实现上.如果你真的想要性感的新尺寸类型,至少可以使用和.int16_tuint32_tint_least16_tuint_least32_t