在C ++中,将带符号整数值转换为无符号整数值的结果可以是两种不同的大小(例如:short int
到unsigned long long int
或{{1 }} long long int
)由标准和平台独立定义(例如,无论如何表示有符号整数)?
答案 0 :(得分:6)
是,该值已定义且与所使用的表示无关。 [conv.integral] / 2:
如果目标类型是无符号的,则结果值最小 无符号整数与源整数一致(模2 n 其中 n 是用于表示无符号类型的位数。)
显然,目的地类型的大小很重要; long long
到unsigned char
可能会产生与long long
到unsigned int
不同的值。