数据类型的介绍:
基本的内置类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
类型的意义:
1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。
2. 如何看待内存空间的视角。
整型家族:
char
unsigned char//0-255
signed char//-128--127
short
unsigned short [int]
signed short [int]
int
unsigned int
signed int
long
unsigned long [int]
signed long [int]
加了中括号的代表可以省略,有符号的整型也可以省略。
浮点数家族:
float
double
构造类型:
指针类型:
int *pi;
char *pc;
float* pf;
void* pv;
整型在数据中的存储: 需要了解原码,反码,补码。
原码、反码、补码
计算机中的有符号数有三种表示方法,即原码、反码和补码。
三种表示方法均有 符号位 和 数值位 两部分,符号位都是用 0 表示 “ 正 ” ,用 1 表示 “ 负 ” ,而数值位
三种表示方法各不相同。
原码
直接将二进制按照正负数的形式翻译成二进制就可以。
反码
将原码的符号位不变,其他位依次按位取反就可以得到了。
补码
反码 +1 就得到补码。
正数的原、反、补码都相同。
对于整形来说:数据存放内存中其实存放的是补码。
举个例子如下:
一道例题:
发生整型提升,会按照符号位补全32个比特位。
i小于255恒成立,所以是死循环。
设计一个小程序来判断当前机器的字节序(大小端)
#include <stdio.h>
int check_sys()
{
int i = 1;
return (*(char *)&i);
}
int main()
{
int ret = check_sys();
if(ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0; }
把整型的指针强制转换为字符的指针,只访问一个字节。
函数没有接收返回值,就算你给他值也不做任何的回应。
浮点数的存储: