手记

【学习打卡】第4天 物联网/嵌入式工程师 第一周

课程名称: 物联网/嵌入式工程师

课程章节: 第一周 计算机基础和C语言

主讲老师: 大白老师

课程内容:

今天学习了赋值复合运算符,逗号运算符,三目运算符以及运算符的优先级。

课程收获:

今天算是把运算符学完了,马上就开始第二周的课程了,第二周的课程是C语言的进阶,控制语句,数组,指针,以及函数。期待一下能学到新的知识吧^_^.
开始今天的总结:
赋值符合运算符
比较简单,a+=b相当于a=a+b,a*=b相当于a=a*b,就这样,你学会了举一反三。
逗号运算符与三目运算符

ret = 表达式1,表达式2,表达式3,....,表达式n

功能:按顺序执行表达式,并将表达式n的结果,作为整个表达式的值赋值给ret。
在所有的运算符中,逗号表达式的优先级最低。
a=1,b=2
ret=(a-b,a+b)
结果就是ret=3

 ret = 表达式1 ?  表达式2 :  表达式3 ;

功能:判断表达式1是否为真,若是为真则执行表达式2,并把表达式2最终的结果复制给ret,
否则,就执行表达式3,并把表达式3最终的结果赋值给ret。
关于这个三目运算符呢,刚开始学我有疑问,能不能
a>b?表达式1: ;
事实证明不可以。为了保证本文的准确性以及可信性,我仔细查阅了一下三目运算符,其实相当于

if(条件)
{
	return 表达式;
}else
{
	return 表达式;
}

笔者有些东西学的不扎实,所以刚才犯了个错误找了半天才知道为什么
先上代码

int ret=0,a=2.b=1;
a<b?ret=a:ret=b;
printf("%d\n",ret);

然后报错了,[Error] lvalue required as left operand of assignment。
如果有小伙伴也犯这类错误就要好好记牢了,条件运算符(包括三目运算符)的优先级大于赋值运算符所以这样才是对的:

int ret=0,a=2.b=1;
a<b?(ret=a):(ret=b);
printf("%d\n",ret);

运算符优先级
不知道大家关于这点是不是头疼呢,在刚接触时感觉要记很多,其实不然。
运算符优先级我个人建议就是记常见的,算术大于逻辑这些,如果遇到的话就查阅资料,跟其他同学聊天时我询问了一下他们的意见,他们说如果真遇到优先级,就给想先算的加上小括号,也是个很好的做法。
今天的课后作业

下面是答案

最后就是每日一句激励自己以及你我的话:
所谓努力,就是主动而有目的的活动。

1人推荐
随时随地看视频
慕课网APP