赞
踩
有一定基础的应该了解,强制类型转换的原则是:
高位截断,低位保留
看代码
#include <iostream>
using std::cout;
using std::endl;
int main() {
int a = 165537;
short b = (short)a;
cout << b << endl;
return 0;
}
变量a在计算机中表示为
变量b在计算机中表示为
int占4个字节,short占2个字节
a的表示为a1 86 02 00
高位截断一般即02 00????不对啊,怎么回事?
大端模式和小端模式
计算机中一般存储数据分为大端模式和小端模式,由此可知该编译器是大端模式:低地址存储高字节,高地址存储低字节
即正确的a由高到低是00 02 86 a1
截断高位,保留低位,即86 a1
由于大端模式的原因,变量b在编译器中显示即为86 a1 cc cc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。