/* ******************************************* *
数据类型
说明数据大小
char 1
short 2
int 4
float 4
double 8
构造类型
存储类型
存放在内存中的位置
(堆、栈(auto)、静态区域、代码段)
功能
代码的操作(干什么)
+ - * / % & || 是运算符
控制语句
选择或循环
函数
* ******************************************** */
标识符
变量:
1. 数字、字母、下划线
2. 首字母不可以为数字,且区分大小写
3. 不可与系统关键字相同
定义变量的格式:
<存储类型> <数据类型> <变量名>
| | |申请空间的别名
| |说明申请的空间的大小
| char short int
|
说明申请的空间在内存中的位置的。
auto static extern register
栈 静态 静态 寄存器
int a = 998; //初始化
int b; 先定义
b = 998; 后赋值
常量:
直接常量:
int a = 5;
float f = 3.14159;
"hello world";
char c = ‘A‘;
符号常量
#define Pi 3.14159
int a = 6;
int const a = 6;
const int a = 6;
//const表示将a常量化,不可以通过对a赋值改变a的空间
存储基本单位:
位bit
字节byte KB MB GB
数据的表示方法:
1.整数:
整型数据:
十进制
八进制 <只能表示整数(char short int long)>
十六进制 <只能表示整数(char short int long)>
二进制(C语言不支持,但计算机内部只识别二进制)
进制转换:
十进制<==>二进制
整数-->二进制 辗转相除,除2求余,从下向上读
小数-->二进制 乘2取整,从上向下
二进制 ==>八进制
整型数据的有符号与无符号:
signed int x; (有符号类型最高位作为符号0表示正数,1表示负数)
unsigned int y; (最高位同样作为有效数据位)
整型的打印:
有符号类型;
printf("%d", x);
无符号类型:
printf("%u", y);
2.字符:
ASCII码:
原码:
直接转成二进制,最原始的二进制表示方法, 但在负数运算时,结果出错.进而提出反码.
反码:
正数的反码和原码相同,负数的反码是在原码的基础上取反(符号位不变). 反码解决了原码不能计算的问题,但同时带来了-0,进而提出了补码. (反码加法采用循环进位的方法)
补码:
正数的补码和反码相同
负数的补码在反码的基础上+1。(对原取反+1,符号位除外)
取值范围:
有符号类型字符 : -128 ~ 127
无符号类型字符 : 0 ~ 255
PS:
类型的最大值+1 -->变成类型的最小值
类型的最小值-1 -->变成类型的最大值
3.实型/浮点型:
单精度 float
1位符号位 +8位指数位+23小数位 (偏移码+127)
将一个浮点型数据存放进内存:
1.将浮点型数据转换成二进制指数形式,获取符号位 指数 数据大小
2.float内存最高位存放符号位,紧接着8位存放指数+127的二进制,低23位存放数据的小数位,没错,数据的整数位直接丢弃(因为二进制数据的整数位一定是1,所以可以省略,还原时加上就行)
演示:
6.9 存进内存
测试:将 17.625存进内存
双精度 double
1位符号位 + 11位指数位 + 52小数位 (偏移码+1023)
精度范围 能保证15位有效数据
判断一个float型变量x是否为0:
#define EP 0.000001
if ( (x<=EP)&&(x>=-EP) )
{
}
原文地址:https://www.cnblogs.com/lanbofei/p/9240348.html