// 给定半径r = 37
// 输出圆的面积和周长,小数点后保留2位
// PI = 3.14
int r = 37;
float pi = 3.14;
printf("%.2f\n", pi*r*r);
printf("%.2f\n", pi*r*2);
return 0;
整型
-
无符号整型
直接存储数值的二进制- unsigned short(2) 0 ~ 2^16 -1
- unsigned int(4) 0 ~ 2^32 -1
- unsigned long(4) 0 ~ 2^32 -1
- unsigned long long(8) 0 ~ 2^64 -1
-
有符号整型
以补码的形式存储在内存中的,最高位存储符号位- 正整数 补码、反码就是原码本身
- 负整数
- 原码:最高位为符号位1,数据位为二进制形式
- 反码:符号位不变,数据位按位取反
- 补码:反码+1
- short -2^15 ~ 2^15 -1
- int -2^31 ~ 2^31 -1
- long -2^31 ~ 2^31 -1
- long long -2^63 ~ 2^63 -1
-
数据溢出
存储的真实数值超过了数据类型所能表示的有效范围- 最大值 +1 => 最小值
- 最小值 -1 => 最大值
字符型
内存中存储的是字符对应的ASCII码,也就是正整数
-
字母大小写转换
小写字母 + (‘A’ - ‘a’) => 大写字母
大写字母 + (‘a’ - ‘A’) => 小写字母 -
数字字符 => 数型
‘7’ - ‘0’ => 7 -
转义字符
‘\n’ ‘\r’ ‘\’ ‘’’ ‘"’
实型(浮点数类型)
3.25(十进制)
=> 11.01(二进制)
=> 转换成标准形式,小数点前面为1后面乘以2的指数
1.101 * 2^1
阶码:float类型阶码8位
1(指数) + 127 => 128(阶码)
尾码:float类型尾码23位
101从高位逐位放入,低位补0
1 | 1000 0000 | 1010 0000 0000 0000 0000 000
-
浮点数类型无法精确表示数据(2,4,6,8,)
3.2 => 11.0011001100110011… -
浮点数类型无法直接判等
0.1 + 0.2 == 0.3
0.1 0.000110011001100…
0.2 0.001100110011001…
0.3 0.010011001100110…
假设尾码只有4位。
0.1 0.00011001
0.2 0.0011001
0.3 0.0100110.1+0.2 0.010010 (11)舍去
- float 单精度浮点数 4字节
- double 双精度浮点数 8字节
- long double 长双精度浮点数