为了刷算法方便,回顾一遍C语言
https://www.bilibili.com/video/BV1At411g7ou 零基础课程
基本数据类型(不可再分):
整型:
短整型(short)
整型(int)
长整型(long)
无符号整型(unsigned int)
浮点型:
单精度(float)
双精度(double)
扩展精度(long double)
字符型(char)
空值型(void)
构造数据类型(由多个类型组合而成):
数组
结构体(struct)
公用体(union)
指针
对于基本数据类型所占字节数,C标准中没有给出具体规定哪个基本类型对应多少字节,而且其与机器、OS、编译器有关,比如:同样是在32bits的操作系统,VC++的编译器下int类型为占4个字节、而tuborC下则是2个字节。
所以int,long int,short int的宽度都可能随编译器而异,但有几条铁定的原则(ANSI/ISO制订):
sizeof(short int)<=sizeof(int)
sizeof(int)<=sizeof(long int)
short int至少应为16位(2字节)
long int至少应为32位
不同位数编译器下的基本数据类型所占的字节数:
16位编译器:
short int: 2个字节
int: 2个字节
long: 4个字节
long long: 8个字节
unsigned int: 2个字节
unsigned long: 4个字节
float: 4个字节
double: 8个字节
char: 1个字节
char*(即指针变量): 2个字节
32位编译器:
short int: 2个字节
int: 4个字节
long: 4个字节
long long: 8个字节
unsigned int: 4个字节
unsigned long: 4个字节
float: 4个字节
double: 8个字节
char: 1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节;同理64位编译器)
64位编译器:
short int: 2个字节
int: 4个字节
long: 8个字节
long long: 8个字节
unsigned int: 4个字节
unsigned long: 8个字节
float: 4个字节
double: 8个字节
char: 1个字节
char*(即指针变量): 8个字节
机器字长:是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度,现在一般为32位(4个字节)、64位(8个字节),也有16位(2个字节)的。
在大多数计算机上:
short int表示2个字节长,short只能修饰int,short int可以省略为short;
long只能修饰int和double,修饰为long int(可以省略为long)时,一般表示4个字节,修饰long double时,一般表示10个字节;
unsigned和signed只能修饰char和int,一般情况下,默认的char和int为signed,实型数float和double总是有符号的,不能用unsigned修饰;
bool型(布尔型,也称逻辑型)数据的取值只能是false(假)或true(真),bool型数据所占的字节数在不同的编译系统中可能不一样,在VC++6.0编译环境中bool型数据占一字节。
用sizeof(数据类型)可以确定某数据类型的字节长度,例如用下面的语句:
cout <<”size of int is” <<sizeof(int) <<endl;
在16位计算机上将输出:
size Of int is 2
原文:https://www.cnblogs.com/zimsky/p/12611663.html