一.数据在内存中的存储
1.c语言中的数据基础
2.有符号数和无符号数
有符号数:signed(正数、0、负数)
无符号数:unsigned(正数、0)
3.8bit是你的存储
char ,有符号类型,在内存中占1个字节。 可以表示负数,0,正数。表示的数据范围[-128~127]
unsigned char ,无符号类型,在内存中占1个字节。可以表示0,正数。表示的数据范围[0~255]
- 原码、反码、补码
无符号类型的数:
原码、反码、补码都相同。
有符号类型的负数:
原码符号位不变其他位取反得到反码 反码加一得到补码补码
- 超出范围数据的计算方法
先计算整数的补码(=右边的数)
把补码赋值给变量,然后观察变量的数据类型,
若是为unsinged char类型,一定为正数或0,原,反,补一样.%d输出的原码就是补码,直接转换为元素输出即可。
若是为char类型,观察变量内存存储数据的最高位,1 表示为负数,%d输出需要转换为原码输出.
二.强制类型转换
1.强制类型转换的含义
强转类型: 采用某种方式将某种数据类型强制转换为我们需要的数据类型.
注:强转只是临时强转,本身的数据类型没有改变。
2.显式转换
格式: (数据类型)变量名
float pi = 3.1415926;
// 把pi强制转换为int类型,并赋值给变量num
int num =(int)pi;
// 强转只是临时强转,本身的数据类型没有改变
3.隐式转换
若运算符两边的类型不匹配,并且没有进行显示指定类型。系统会默认触发隐式的强转,强转规则如下: