首先介绍一下sizeof这个特殊运算符, sizeof是用来计算数据在内存中所占内存空间大小的运算符(针对数据类型而言),它的返回类型是size_t类型,size_t是一个无符号整数类型。size_t在不同的操作系统中所占位数可能不同,但是size_t类型一定是无符号类型。
int类型分为int型常量和int型变量。int类型在内存中站四个字节,在16位操作系统下是两个字节,在32位操作系统下是四个字节,在64位操作系统下依然是四个字节大小的空间。
int a;//表示在内存中开辟一个4个字节大小的空间
a = 10;//在开辟的空间中存储常量10
printf输出Int类型
size_t size = sizeof(int);
printf("%d\n",size);//按十进制打印一个整数
printf("%x\n",size);//按十六进制打印一个整数
printf("%X\n",size);//按十六进制打印一个整数,和%x的区别是打印ABCDE还是abcde.
printf("%o\n",size);//按八进制打印一个整数
short,long,long long,unsigned int
在32位系统中:
short 是两个字节,long和int一样是四个字节,long long是八个字节
在64位操作系统下:
int是4个字节,long在大多数系统下是8个字节
unsigned int;//无符号整数
unsigned long;//无符号长整数
unsigned short;//无符号短整数
9l,9L,9ll,9LL,9u,9U,9ull,9ULL
9l,9L表示长整型常量9,9ll和9LL表示long long型整数9,9u和9U表示无符号常量9,9ull和9ULL表示无符号long long型整数
整数溢出:当把一个数据类型较大的数赋值给一个数据类型所占内存空间较小的数时就会造成数据溢出。
int i = 0x12345678;//i占4个字节内存空间
short a = i;//a占2个字节内存空间
上面的代码就造成了整数溢出。整数溢出的结果就是将原有的数据的高位抛弃,只将低位保留。
·char类型包括char常量和char变量。char类型在内存中占一个字节空间大小。
char在内存中,有符号最大7f,无符号最大ff(unsigned char)。char的本质就是一个字节(BYTE)。