C语言基本类型声明、初始化、大小及格式说明符总结
类型 |
声明及初始化 |
大小(byte) |
格式说明符 |
char |
char a=’2’; char a=50,b=062,c=0x32; char a=’\062’,b=’\x32’; char a=’\n’,b=’\012’,c=’\x0a’; |
字面量和常量:4 变量:1 |
%c |
short |
(unsigned) short (int) a=50,b=062,c=0x32,d=50u; |
2 |
%hd、%hu、%ho、%#ho、%hx、%#hx |
int |
(unsigned) int a=50,b=062,c=0x32,d=’2’; |
4 |
%d、%u、%o、%#o、%x、%#x |
long |
(unsigned) long a=50,b=062,c=0x32,d=50L; |
4 |
%ld、%lu、%lo、%#lo、%lx、%#lx |
long long |
(unsigned) long long a=50,b=062,c=0x32,d=50LL; |
8 |
%lld、%llu、%llo、%#llo、%llx、%#llx |
float |
float a=0.1,b=.1,c=1.,d=1e2,e=1.0e2,f=1.0f; |
4 |
%f、%e、%a |
double |
double a=0.1,b=.1,c=1.,d=1e2,e=1.0e2; |
8 |
%f、%e、%a |
long double |
long double a=0.1,b=.1,c=1.,d=1e2,e=1.0e2; |
8 |
%lf、%le、%la |
注意:0.格式说明符中是o(大写为O)不是零,是l(大写为L)不是1。
1.大小为标准的32位机器中的情况,不同机器的int和long大小可能会有差异。
2.还有一些新增的类型如_Bool、_Complex、_Imaginary此次并未列出。
3.尽管同一种类型可以有这么多种表示方式,但请尽量选择表达最清楚的方式。
4.无符号类型尽量少用,因为C蛋疼的隐式类型转换会让你大吃一斤(比如:if(50u>-50))!!!
5.注意每种类型的取值范围(溢出问题)及表示精度(什么很大的数和很小的数相运算就是精度这个问题啰),就是根据数据占有的位个数来计算啦,整数要考虑符号位,浮点数要考虑浮点编码(单精度1,8,23,双精度1,11,52)。
6.考虑到代码移植性的话,会用到inttypes.h和stdint.h的东西(什么int32_t,long64_t就是这里边的东西啦)。
7.不管什么联合类型、枚举类型、用户自定义的结构体类型或是带了函数(过程)的抽象数据类型,甚至是所谓高端的面向对象的类,都是由这些基础数据类型(元类型)构建的,所以嘛基础一定要稳哟!