一.C语言中数据类型的介绍
1.c语言的内置类型及大小(单位字节)
char 字符数据类型 1
short 短整型 2
int 整型 4
long 长整型 4/8
long long 更长整型 8
float 单精度浮点数 4
double 双精度浮点数 8
2.整型家族
char signed char
unsigned char
char存储的时候是存储的对应的ASCII码值,所以也归为整型家族;
short signed short [ int ]
unsigned short [ int ]
int signed int
unsigned int
long signed long [ int ]
unsigned long [ int ]
long long signed long long [ int ]
unsigned long long [ int ]
3.浮点数家族
float
double
long double
4.自定义类型(构造类型)
数组类型 int arr1[10] ---->类型为 int [10]
char arr2[10] ----->类型为 char [10]
int arr3[5] ------>类型为 int [5]
结构体类型 struct
struct {
结构体所包含的数据成员,包括变量数组
}结构变量;//结构变量可以指定一个或则多个
例如:
struct
{
char name[11];
char sex[5];
int age;
}Stu;
枚举类型 enum
如:enum { red=1, oreange=2, yelloe=3, green=4,blue=5}
联合类型 union
5.指针类型
int* p1
float* p2
char* p3
void* p4
结构体指针
......
6.空类型
void (表示空类型,无类型)
通常应用函数的返回类型,函数的参数,指针类型
void test( )
{
int i = 0;
printf("%d\n",i);
}
void * p
二.整型数据在内存中的存储
1.二进制
注意:实际上整型数据在内存中的存储,计算等操作都是用的补码
整型数据的二进制的表现形式有3种
原码,反码,补码
1.正整数的原码,反码,补码相同
如:
2.负数的原码,反码需计算
2.整型数据在内存中的存储(示例)
本质上数据在内存中是以二进制的形式存储的,但是在VS上为了方便展示,显示的是十六进制
这里的存储顺序是:小端字节序存储(下面有数据字节序存储分类)
3.数据字节序存储分类(2种)
字节序:是以字节为单位 ---> 讨论存储
存储的顺序分为两种:
1.小段字节序存储:把一个数据的低位字节的内容,存储在低地址处,把高位字节的内容,存储在高地址处;
2.大端字节序存储:把一个数据的低位字节的内容,存储在高地址处,把高位字节的内容,存储在低地址处;
编程实现:检测VS上是哪种储存形式
----------------->思路:
所以可以打印出一个字节的内容
如果是 1 ,则是小端字节序存储
如果是 0 ,则是大端字节序存储
代码实现:
#include <stdio.h> int main() { int num = 1; if (*((char*)&num) == 1) { printf("小端字节序存储\n"); } else { printf("大端字节序存储\n"); } return 0; }
运行结果:
三.整型家族有符号和无符号的区别
char signed char
unsigned char
short signed short [ int ]
unsigned short [ int ]
int signed int
unsigned int
long signed long [ int ]
unsigned long [ int ]
long long signed long long [ int ]
unsigned long long [ int ]
我们所说的 short, int , long , long long 都是默认的是(有符号的) signed short , signed int , signed long , signed long long
但是char 到底是signed char 还是 unsigned char 我们不知道
但是在VS上char------>是signed char
有符号和无符号的区别: