int
最后查到问题了,是因为absint_min是未定义行为
最后查到问题了,是因为abs(INT_MIN)是未定义行为,在编译器优化了之后产生了奇怪的结果。 这个未定义行为不在于“有符号数转无符号数”,C的中定义的abs()函数的原型是int abs(int);,返回值仍为int而非unsigned。 发生未定义行为的原因在于abs(INT_MIN)的返回值不能由它的类型(int)表示
当static_cast转换不被编译器允许时
当static_cast转换不被编译器允许时,在你真的确保转换是可以安全转换时,你可以使用reinterpret_cast,用法和static_cast一样。 上面代码中将int_type类型的对象t的地址强制从int_type *转换成int *。 类int_type只有一个成员变量并且是int类型的,占用的大小就是int的大小