一.运算符的结合性
说明
int i=10 (初始化,开辟内存空间同时赋值)
int i
i=10 (赋值,开辟内存空间后,改变内存空间的值)
对于% 适用于整形或者与整形相兼容的运算对象,最终结果与左操作数有关,结果小于右操作数。
对于/ 俩个实数相除的结果是双精度实数,俩个整数相除的结果是整数,对于编译器只能做类型的检查,即对于结果取舍方向是不固定的。
二.自增(++)与自减(--)运算符
++i,--i 在使用i之前,先使i的值加(减)1 {效率高}
i++,i-- 在使用i之后,使i的值加(减)1
在系统的存储上对于++i,开辟空间后直接执行程序,而--i,是开辟空间后先拷贝一份,后执行程序。
贪心算法:例如++i+++i+ 自右向左i++为右值会出错,所以程序应当清晰易懂,不致引起歧义。
三.左值(Loatable)与右值(Readable)
以赋值符号为界=为界,=左边的就是左值,=右边的就是右值。
右值又名临时变量(匿名变量)调用完printf空间会被回收。
可根据能否被定位&(取地址符)判断左右值
const 将定义变量改为只读变量
注const int i 还是左值,可被取址,本质为变量。
四.不同类型数据间的混合运算
隐式转换:系统自动进行的类型转换,用户不干涉
横向箭头表示必转 ,
显式转换:当自动类型转换不能实现目的时,可以使用显示转换
一般形式为(类型名)(表达式)
五.混合赋值
赋值运算本质是内存的拷贝
int = doubule 小数部分被截断
short = int 高截断保留低位
int = short 符号位扩展
int = unsigned 高位补零