1.c/c++ 类型所占字节
类型名 大小(byte)
char 1
short 2
int 4
long 4
float 4
double 8
2.cast
转换种类 行为 可行性 例子
char->short 因为'A'实际表示为65,所以short变量值为65 总是可行
short->char 正数转换直接去掉高位1个字节,负数转换没定义 有时
int->short 正数与负数的转换都是直接去掉高位2个字节 有时 i = pow(2,17) - 1, s = i => s = -1;
i= - pow(2,31), s = i => s = 0
short->int 正数转换int高位用0填充,负数转换高位用1填充 总是可行 s = -1, i = s => i = -1
int->float 将按照float的格式进行转换,总是可行 总是可行
float->int float太大时不可行,float较小时小数部分被截取 有时
cast总结:
- 空间占用小的类型赋值给空间占用大的类型总是可以正常转换的,相反则不能。
- int占用4字节共32位,这表明int变量可以表示2的32次方个不同的数字,
如果是有符号的那么这个2的32次方个数字的range如下
-1~-231 , 0 , 1~231-1
如果是无符号的那么这个2的32次方个数字的range如下
0 , 1~232-1
3. float表示法
1位符号位s | 8位指数exp | 23位小数x
格式 (-1)s * 1.xxxxxxx * 2(exp-127)
实例 7.0 = (-1)0 * 1.75 *22