数据类型 回顾!
第一节 数据类型
数据结构(4种) |
基本类型 |
整型 实型(浮点型) 字符型 |
构造类型 |
数组类型 结构体类型 共用体类型 枚举类型 |
|
指针类型 |
|
|
空类型 |
|
第二节 常量与变量。
常量:值不能改变的量是常量。
分为直接常量和符号常量。
直接常量:包括整型常量、实型常量、字符型常量和字符串常量。
符号常量:指的是宏定义中的#define 标识符 变量值。
一个#define命令一次只能定义一个常量,若要定义多个,需使用多次#define命令。如:
#define n 10
#define m 5
1.整型
1.1整形数据
关键字 |
类型 |
占用字节数 |
取值范围 |
int |
整型 |
4字节(32位) |
-2^31 ~ 2^31-1 (-2147483648~2147483647) |
short |
短整型 |
2字节(16位) |
-2^15 ~ 2^15-1(-32768~32767) |
long |
长整型 |
4字节(32位) |
-2^31 ~ 2^31-1 (-2147483648~2147483647) |
unsigned int |
无符号整型 |
4字节(32位) |
0 ~ 2^32-1(0~4294967295) |
unsigned short |
无符号短整型 |
2字节(16位) |
0 ~ 2^16-1(0~65535) |
unsigned long |
无符号长整型 |
4字节(32位) |
0 ~ 2^32-1(0~4294967295) |
说明:
1.无符号数不能表示负数。(从unsigned的取值范围可看出),
2.无符号整数以二进制原码形式存储(无符号数在内存的最高位不是符号位)。
3.有符号整数(正数、0和负数)在内存中以二进制补码形式存储。
经我用DEV C++测试,小米64位笔记本 long在也是4字节。
printf("%d",sizeof(long)); //4
unsigned 不能修饰 float与double
原因:https://blog.csdn.net/wordwarwordwar/article/details/84194049
1.1整形常量
十进制整形常量:0-9
八进制整形常量:以0开头:-017表八进制数-17
十六进制整形常量:以0x开头
长整形常量:以L或l结尾
无符号整型常量:以U或u结尾
整形常量种类 |
有效数字 |
举例 |
十进制整形常量 |
0~9 |
17 18 |
八进制整形常量(以0开头) |
0~7 |
017 020 |
十六进制整形常量(以0X或0x开头) |
0~9、A~F |
0XAF 0x2D |
长整形常量:(以L或l结尾) |
0~9 |
23L 23l |
无符号整型常量(以U或u结尾) |
0~9 |
17U 18u |
判断正误:
0xuu (×,最多到f,此数不属于任何进制)
018 (×,最多到7,此数不属于任何进制)
1.2整型变量
1.3进制转换
R表示任意进制。
R -> 十 : 按R展开求和
十 -> R : 除以R取余倒排。
记住R转十是乘,十转R是除.
结果该加0x加上,该加0也加上
例如:
有符号的二进制转十进制:
有符号数的第一位数代表正负,1负0正。后面的数按R展开求和。
例如:
十进制 |
二进制 |
对应10来理解进制转换 |
|
|
2(2^1) |
10 (1个0) |
|
10^1 |
10 |
4(2^2) |
100 (2个0) |
|
10^2 |
100 |
8(2^3) |
1000 (3个0) |
|
10^3 |
1000 |
16(2^4) |
10000 (4个0) |
|
…… |
…… |
32(2^5) |
100000 (5个0) |
|
|
|
64(2^6) |
1000000 (6个0) |
|
|
|
128 (2^7) |
10000000 (7个0) |
|
|
|
1.4原码、反码、补码、按位取反
无符号整数以二进制原码形式存储(无符号数在内存的最高位不是符号位)。
有符号整数(正数、0和负数)在内存中以二进制补码形式存储。
|
正数 |
负数 |
原码 |
将十进制转为二进制 |
|
反码 |
同原码 |
最高位(符号位)不变,数值位取反(0变1,1变0) |
补码 |
同原码 |
反码+1 |
按位取反(~) |
将补码的符号位和数值位全部取反 |
如,计算:~5 、~-6:
printf("%d,%d",~5,~-6); //-6,5
2.实型
(1)float 与 double 输出时都用%f,float输入时用%f , double输入时必须用%lf(小写L,不是数字1)
(2)%f 输出时默认保留6位。
- 点赞
- 收藏
- 关注作者
评论(0)