1、数据类型
常量(整型常量、浮点型常量、字符常量‘A’、字符串常量"hello"、符合常量[用defined定义的])
变量
类型 | 描述 |
---|---|
基本类型 | 他们是算数类型,包含两种类型:整数类型和浮点类型 |
枚举类型 | 他们也是算数类型,被用来定义在程序中只能赋予其一定的离散整数值的变量 |
void类型 | 类型说明符void表明没有可用的值 |
派生类型 | 他们包括:指针类型,数组类型,结构类型,共用体类型和函数类型 |
1.1、数据类型汇总表
类型 | 符号 | 关键字 | 位数 | 表示范围 |
---|---|---|---|---|
字符型 | 有 | char | 8 | -128 ~ 127 |
无 | unsigned char | 8 | 0-255 | |
整型 | 有 | (signed) int | 16 | -32768 ~ 32767 |
有 | (signed) short | 16 | -32768 ~ 32767 | |
有 | (signed) long | 32(32位操作系统中4个字节,在64位操作系统中8个字节) | -2147483648 ~ 2147483647 | |
有 | (signed)long long | 64 | -2^63 ~2^63 | |
无 | unsigned int | 16 | 0 ~ 65535 | |
无 | unsigned short int | 16 | 0 ~ 65535 | |
无 | unsigned long int | 32 | 0 ~ 4294967295 | |
无 | unsigned long long | 64 | -2^64 ~ 2^64 | |
无 | _Bool | 原则上只占1位 | 0——false,1—true | |
浮点型 | 有 | float | 32 | 3.4e-38 ~ 3.4e38 |
有 | double | 64 | 1.7e-308 ~ 1.7e308 | |
有 | long double | 128 | 1.1E-4932,1.1E+4932 | |
复数类型 | float _Complex | |||
double _Complex | ||||
long double _Complex | ||||
虚数类型 | float _Imaginary | |||
double _Imaginary | ||||
long double _Imaginary |
参考资料
https://www.runoob.com/cprogramming/c-data-types.html
https://blog.csdn.net/wfreehorse/article/details/60589326
1.2、浮点数!!!
1.2.1、意义
面对金融和数学程序经常使用浮点数。
1.2.2、浮点类型
float、double、long double
1.2.3、表示方法
数学中有一般记数法、科学记数法、指数记数法(e记数法)
指数记数法是计算机中的写法。
(有效位数代表了精度,指数代表了可表示数的范围)
C99标准添加了一种新的浮点型常量格式——用十六进制表示浮点型常量。即在十六进制数前加上十六进制前缀(0x或0X),用p和P分别代替e和E,用2的幂代替10的幂(即,p计数法)。如0xa.1fp10,即(10+1/16+15/256)*1024 =10364.0
1.2.4、物理层表示方式
1.2.4.1、float类型
32位
(符号位)(指数部分)(非指数部分/尾数/有效位)
1+(1+7)+23
至少6位有效数字(2^23=8388608)
3.4E-38,3.4E+38
1.2.4.2、double类型(双精度)
64位
(符号位)(指数部分)(非指数部分/尾数/有效位)
1+(1+10)+52
至少13位有效数字(2^52=4503599627370496)
1.7E-308,1.7E+308
1.2.4.3、long double类型
(可能)表示更大的浮点数,C只保证long double类型至少与double类型的精度相同
1+(1+14)+112
1.1E-4932,1.1E+4932
1.2.5、代码层表示方式
常用指数记数法。
类型 | 存储大小(字节) | 值范围 | 精度 |
---|---|---|---|
float | 4 | 3.4E-38,3.4E+38 | 6位 |
double | 8 | 1.7E-308,1.7E+308 | 15位 |
long double | 16 | 1.1E-4932,1.1E+4932 | 19位 |
1.2.6、浮点值的上溢和下溢
1.2.6.1、上溢
含义:计算导致数字过大,超过当前类型能表达的范围。
处理:C会给结果赋一个表示无穷大的特定值,而且printf()显示该值为inf或infinity或者具有无穷含义的其他内容。
1.2.6.2、下溢
含义:计算导致数字过小,超过当前