在C ++中签名为无符号转换

时间:2015-10-23 16:16:38

标签: c++ integer standards c++14 signed

在C ++中,将带符号整数值转换为无符号整数值的结果可以是两种不同的大小(例如:short intunsigned long long int或{{1 }} long long int)由标准和平台独立定义(例如,无论如何表示有符号整数)?

1 个答案:

答案 0 :(得分:6)

是,该值已定义且与所使用的表示无关。 [conv.integral] / 2:

  

如果目标类型是无符号的,则结果值最小   无符号整数与源整数一致(模2 n 其中 n   是用于表示无符号类型的位数。)

显然,目的地类型的大小很重要; long longunsigned char可能会产生与long longunsigned int不同的值。