逻辑类型
#include
bool 1真 0假 (注:C语言中认为非0为真)
整型
char(字符类型) 本质依旧是数值类型 1个字节
unsigned 无符号 0~255 256个数
signed 有符号 0~127 -128~-1 -128~127 256个数
short(短整型) 2个字节
int 4个字节 32位 2个字节 16位
long(长整型) 4个字节 32位 8个字节 64位
浮点型 编译器默认保留6位精度
float 单精度 4个字节 6位精度
double 双精度 8个字节 16位精度
注:浮点数存放时与整数并不相同(需要将整数部分和小数部分分别转换二进制)
常量:程序运行过程中不会发生改变的量
整形常量:二进制0b10101 十进制 十六进制0x123 八进制0123
浮点型常量:123.123
浮点型指数形式:
1.23123x10^2 数学科学计数法
1.23123e+2 指数形式浮点型写法
字符常量:'A' 65 'a' 97 字符必须以''引出
字符串常量:以""引出 字符串末尾总有'\0'存在 "abc"
标识常量:宏替换 本质:是字符串的整体代换
define 一般出现在头文件下方
#define 标识符 被替换的目标 (可以替换:数值,运算式,一行语句)
注:define在替换运算式时需要注意运算优先级问题 (加括号!)
变量:程序运行过程中可以发生改变的量
局部变量 作用域! 在{ }的变量是局部变量
全局变量 不在{}内的变量是全局变量
变量的初始化:在变量定义时对该变量赋值的过程叫做初始化 (防止垃圾值产生)
int a = 10; 初始化 10叫做初始值
a = 20; 只是赋值
一般格式:
static unsigned int a;
存储类型 数据类型(规定了变量中存放数据的类型以及变量的大小) 变量名
auto :只能用于修饰局部变量,如果不在局部变量前加存储类型,则默认auto类型
register(寄存器类型): 将修饰的变量放入寄存器中,提高程序的运行效率,但如果寄存器满了,则默认变为auto类型
extern(外部引用类型): 引用同一工程中的全局变量.
声明: extern int a 告诉编译器有a变量但不是在这边开辟空间的
定义: int a 是定以,在内存上有真实空间开辟了
static:
修饰全局变量
限制全局变量的作用域,使全局变量的有效空间在本文中,别的文件不能引用被static修饰的全局变量,即便是 extern 外部声明也不可以。
修饰函数
限制函数作用域,这个函数的只能在本文件中调用,不能被其他文件调用。
修饰局部变量
改变局部变量的存储区域,延长生命周期,修饰的局部变量初始化只有一次,运算结果会保留。
构造类型
后续介绍
指针类型
后续介绍
void型
后续介绍
强制数据类型转换
1.隐式转换(是一种错误)
有符号数和无符号数运算:则此时有符号数转换成无符号数
-1(有)+0(无) > 0 1
赋值转换
'='左右两边数据类型不一致,将右边的值的类型转换成左边的类型
浮点型向整形转换时会产生精度丢失;
大的数据类型向小的转换时可能造成数据越界。
算术转换
一个运算式中如果出现多个不同数据类型,则默认向最大的数据类型转换
double
printf
输出数据时不匹配,也会导致隐式转换或者报错
2.显示转换 (多用于指针操作)
格式:(想要转换的数据类型)被转换的目标
例如:
char a;
(int)a
注意点:
1.浮点型和整型相互转换时依旧存在精度问题
2.大的数据类型向小的转换时可能造成数据越界
3.强制数据类型装换不会改变数值的本质(该是什么还是什么),显示的效果发生了改变