从int16_t转换为uint32_t

时间:2012-09-27 12:37:24

标签: c++ c

int16_t s;
uint32_t ui = s;

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

1 个答案:

答案 0 :(得分:6)

结果是明确的;非负值保持不变,负值以模2 ^ 32减少。但是,需要{strong>完全大小类型(如int16_tuint32_t)的情况非常罕见。除了intunsigned long之外,其他任何内容都不需要:这些类型的至少位数与int16_tuint32_t以及与int16_tuint32_t不同,它们在任何符合要求的实施中都必须存在。如果你真的想要性感的新尺寸类型,至少可以使用int_least16_tuint_least32_t来实现便携性。