1.数据的类型介绍
char //字符数据类型
short //整短型
int //整形
long //长整形
long long //更长整形
float //单精度浮点型
double //双精度浮点型
1.1类型的基本归类
整形家族:
char
unsigned char //无符号字符型
signed char //有符号字符型
short
unsigned short //无符号短整型型
signed short //有符号短整型型
int
unsigned int //无符号整型
signed int //有符号整型
long
unsigned long //无符号长整形
signed long //无符号长整形
char c1; //char 到底是有符号的,还是无符号的,是不确定的,是取决于编译器的实现结果;同时char虽然是字符类型,但是字符类型存储的时候,存储的字符的ASCII值,ASCII的值是整数。
short s1; //指的是有符号的s1;
signed s2; //指的是有符号的s2;
unsigned s3; //指的是无符号的的s3;
int n1; //指的是有符号的n1;
short等价于signed short;
int等价于signed int;
long等价于signed long
浮点数家族:
float //单精度浮点型
double //双精度浮点型
构造类型:
>数组类型
>结构体类型 struct
>枚举类型 enum
>联合类型 union
指针类型:
int *pi; //整形类型指针
char*pc; //字符类型指针
float*pf; //单精度类型指针
void*pv; //双精度类型指针
空类型:
void表示空类型(无类型)
通常应用于函数的返回类型,函数的参数,指针类型。
2.整形在内存中的存储
一个变量的创建时要在内存中开辟空间的,空间的大小是根据不同的类型决定的。
2.1原码,反码,补码
计算机的整数有三种表达方式,即原码,反码,补码。
三种的表达方式均有符号位和数值位,符号位都是用0表示“正”,“1”表示负,但是正整数和负整数的表达方式是不同的。
正整数:
原码,反码,补码都是相同的。
负整数:
原码:直接将按照正负数的形式翻译成二进制即可。
反码:将原码的符号位不变,其他位依次按位取反即可
补码:在反码的基础上+1即可。
实例:
#include<stdio.h>
int main()
{
int a = -3; //负数的正,反,补码皆不同
//原码:10000000000000000000000000000011
//反码:11111111111111111111111111111100
//补码:11111111111111111111111111111101
int b = 5;
//原码:00000000000000000000000000000101
//反码:00000000000000000000000000000101
//补码:00000000000000000000000000000101
int c = a + b; //使用补码的二进制进行计算
//a的补码: 11111111111111111111111111111101
//b的补码: 00000000000000000000000000000101
//c的补码: 00000000000000000000000000000010 //c=2
printf("%d\n", c);//数据的打印是补码计算结果
return 0;
}
运行结果
总结:
1.在计算机的系统中,数值一律用补码来储存和表示,原因在于,使用补码,可以将符号位和数值统一处理。
2.对于整数来说:数据存放在内存中的其实放的是补码。