一.
1.转义字符:
'n' //字符 n
'\n' //转换含义 --- 表示换行
'\t' //调到下一个制表符 --- 制表符的宽度 8个字符
'\b' //退格
'\r' //回车 --效果是光标回到本行开头
char ch='\101';'\八进制',输出为A
2.隐式类型转换
如图:从右向左 必转
从下向上 低精度 和 高精度 混合运算时,低精度往高精度转
二.算术运算符
1. / :就是数学中的÷号
(1).如果是两个整型数相除,此时相当于是整除的效果
(2).除法运算中 除数不能为 0
2. % :取余数
(1).除数不能为0
(2).求余运算,运算数不能是小数。必须是整数
(3).结果的符号 ,取决于 左操作数 的符号
例如: -10%-3=-1; 10%-3=1;只取决于左边操作数;
%的应用:用来判断奇偶数
一个数%100 的范围:0~99
一个数%50 的范围:0~49
还可以用来产生0~99的随机数
int rand(void);
void srand(unsigned int seed); //函数原型
//void --- 这个函数 返回值的类型
//srand --- 函数名字
//unsigned int seed --- 形式参数 //变量 --- 形参
如:srand(5); //5 实际参数 ---实参
rand(); //seed = 1 ---> 一系列的随机数 0 ~ RAND_MAX
seed = 2 //rand ---新的一系列的随机数
time_t time(time_t *tloc); //时间秒数
time(NULL);//返回值就是获的到的秒数值
第七行代码来实现每次输出的随机数不一样
注意:
1.编译时 报错 --- 语法错误 --- 检查代码的语法问题
2.运行时 报错 --- 逻辑问题 --- 检查思路或逻辑问题
3.
优先级 --- 不同优先级的运算 混合运算时,高优先级的先结合
结合性 --- 同一优先级的运算 混合运算时,按照结合性进行结合。
三、表达式
1、强制类型转换
(类型)运算数 //强制类型转换 需要注意 ,并不会影响运算数本身
2. i++ //后置加加 --- 先用(表达式的结果) 后加(让i自增)
++i //前置加加 --- 先加(让i自增) 后用(表达式的结果)
注意:
1. i++ ++i如果单独使用,效果上没有区别
2. 先用后加或先加后用,是参与到别的运算中时,才发挥作用
3. 运算数,必须是一个可修改变量
3.表达式的左值右值
可定位的 左值 --- 变量
不可定位 右值 --- 常量
判断是否可以定位:&a,取地址运算 --- 获取a对应内存空间的首地址 --地址编号
4.考点
编译后会报错,原因
最后一行:((i++)++)+i;i++是右值不能再继续++
5. i++和++i,
i++占用2块区域,先用i值,再自增,所以需要第二块区域存储i++本身表达式的值,如图。
++i占用一块区域,先自增,再用i值
所以有++i的效率高
6.注意:
printf("%d %d",i,i++);1.函数传参顺序 2.i++ 先用后加,什么时候加 --没有统一规定
7. =运算符
高精度 => 低精度 --- 精度丢失
长类型 => 短类型 --- 高位截断
短类型 => 长类型 --- 短类型是否有符号
无符号 ---高位补0
有符号 ---符号位扩展(高位补符号位)
8. 逗号运算
1+2,a++,3+4 //从左到右,挨个运算
//逗号运算表达式的结果 --- 是整个式子中最后一个表达式运算的结果
如
输出b=7,a=2
9.
int a='abcd';格式不对,编译会有警告,会被识别成16进制0x61626364
%d:输出它的10进制1,633,837,924
%c:输出d ,高位截断
%#x:输出0x61626364