目录
正文
1.转义字符
'n' //字符 n
'\n' //转换含义 --- 表示换行
'\t' //调到下一个制表符 --- 制表符的宽度 8个字符
'\b' //退格
'\r' //回车 --效果是光标回到本行开头
2.运算符
算术运算符
+ - *
/
%
++
--
赋值
int a;
a = 10; //赋值运算 //赋值表达式
a=(b=(c=10)) //可以连续赋值
放左边的称为左值,右边的为右值
localtion able value // 可定位的 ---- 可定位的 左值 --- 变量
不可定位 右值 --- 常量 表达式
&a //取地址运算 --- 获取a对应内存空间的首地址 --地址编号
类似常数等是属于匿名变量,不可用&读取地址值
字符赋值:char ch = ‘ A ’ char ch = '\065' (八进制) char ch = 'x41'(十六进制)
3.表达式
++ 自增 --- 表示一次增加1
int a = 1;
a++ //后置加加 --- 先用(表达式的结果) 后加(让i自增)
++a //前置加加 --- 先加(让i自增) 后用(表达式的结果)
注意:
1. a++ ++a如果单独使用,效果上没有区别
2. 先用后加 或 先加后用,是参与到别的运算中时,才发挥作用
3. 运算数,必须是一个可修改变量
10++ 运行错误
逗号运算(顺序求值运算符):
语法:
表达式1,表达式2,表达式3, ...,表达式n
逗号运算的过程:
1+2,a++,3+4 //从左到右,挨个运算
//逗号运算表达式的结果 --- 是整个式子中最后一个表达式运算的结果
举例:for(sum = 0,i =0,j = 0;2;3)
贪心法:
从左到右逐个扫描,将字符尽可能多的结合成c语言运算符
i+++++i
i ++ ++ + i //
i++ ++ + i
((i++)++) + i
i++ 与 ++i的存储形式,++ i 效率更高
i++占用两块区域,先用i值,再自增(所以需要第二块区域存贮 i++本身表达式的值)
++i占用一块区域,先自增,再用izhi
注意:
printf("%d %d",i,i++);//1.函数传参顺序 2.i++ 先用后加,什么时候加 --没有统一规定
建议:
m = i;
n = i++;
printf("%d %d\n",m,n);
总之,不写出别人看不懂的、也不知道系统会怎样执行的程序
5.不同类型的数据间混合赋值
精度转换,多类精度运算,结果为最高精度。
高精度 => 低精度 --- 精度丢失
低精度 => 高精度------数据正常
长类型 => 短类型 --- 高位截断
短类型 => 长类型 --- 短类型是否有符号
无符号 ---补0
有符号 ---符号位扩展
总结
1.注意char型的三种赋值方式:
char ch = ‘ A ’ char ch = '\065' (八进制) char ch = 'x41'(十六进制)
求余符号%两侧都只能是整数 10%3 (正确) 5.5%2(错误)
2.计算复杂表达式注意=运算符的优先级
3.精度转换,多类精度运算,结果为最高精度。
short ====> int
短类型 => 长类型 --- 短类型是否有符号
无符号 ---补0
有符号 ---符号位扩展
short 1 000 0000 0000 0001(第一个1符号位)
int 1111 1111 1111 1111 1000 0000 0000 0001(前面多出来的2个字节全部补符号位1)
4. int = ‘ abcd’ //0x61626364 存放的是ASCII码值
int = ‘abcdef’ //0x63646566 四字节只够存放后四位cdef码值,既高位截断