变量赋初值:
变量开辟内存空间后,内存空间为随机的,若不赋值,则为随机数
int i = 10; =:初始化 (开辟空间的同时赋值)
i = 10; =:赋值(开辟空间的随机数更改成指定的值)
运算符
优先级 含义 结合方向(同等运算符的运算顺序)
1 + 2
操作数 运算符(operator)操作数(operand)
双目运算符即需要两个操作数的运算符
单目运算符优先级高于双目运算符
任何表达式都有数据类型 编译器只做类型检查
程序崩溃,当即终止运算
% 求余运算符
求余运算符要求运算符左右两边的操作符为整型或与整型相兼容
求余表达式最终结果的符号与左操作数有关,与右操作数无关
求余表达式的最终结果一定小于右操作数
man 调用程序员手册
返回值 + 函数名(标识符) + (函数形参表)如 long int random (void)
形参与实参必须个数相等,类型匹配
临时变量(匿名变量)
i++:
++i :先加后用;i++:先用后加
++i 效率高于 i++ ,适用于浮点型和字符型
i++ + i++ + i++ 不同的软件有不同的运算结果,杜绝这种写法
赋值运算符的左右:
left value = lvalue 左值(变量)right value = rvalue 右值(常量(不能放在左边))
所有的匿名变量都为右值
贪心运算:++i++ 后置++为临时变量,为右值,不能自增
locatable readable
& 取地址运算符 (%p)
能取地址的为左值,不能取地址的为右值
const int i = 2;
i为只读变量,不可直接修改 i为左值
各类数值型数据间的混合运算
隐式转换:
显式转换:
(类型)
类型转换运算符 有可能会带来数据的丢失
转换为匿名变量,为右值
赋值运算符
i += 2 等同于 i = i + 2 要求左操作数必须为左值
本质:内存拷贝
混合赋值
int = double 小数部分截断
short = int 高位截断
int = short 符号位扩展(短数据符号位决定长数据的空穴为0或者1)
unsigned int = int 内存拷贝
总结:long = short 若short为有符号位,则long的空位根据short符号位决定,正全为0,负全为1
若short为无符号位,则long的空位全为0
逗号运算符
逗号运算符输出最后一个 如(1 + 2,3 * 8,7 - 5);输出的为5
函数调用表达式中的逗号,不是逗号运算符,是形参的分隔符
---------------------
嵌入式学习第三天,今天讲的内容明显比前两天更多更难,但还好不算很难理解。人生不就应该以迎难而上吗?继续加油吧!