课程来源:链接: 浙江大学 翁恺 程序设计入门——C语言
学习日期:2023年5月18日
第二周 计算
表达式
- 有两个变量a和b,交换a和b的值。
老师举例:有两杯液体,一杯茶,一杯饮料,将这两杯液体互换。则需要另外先找一个空杯子,然后按顺序倒腾。 - 复合赋值运算符:
+=、-=、*=、/=、%=这个五个。
*历史故事:*当年C语言,是在PDP 11的机器上开发的出来的,当时是想将C做成一个底层的编程语言,开发过程中有个脑袋一亮:用C语言表达出机器语言所有的指令,如果机器语言有一种指令,C语言写了之后,无法通过编译器直接生成那个机器指令,是不行的。而PDP中有一些机器指令,专门做复合赋值运算的。因此,C语言一定要有对应的东西,那么复合赋值运算符就出现了。 - 递增递减运算符:
++、–只能与变量结合,作用是把这个变量加1或者减1。
以a++为例说明
(1)a+=1;
(2)a=a+1;
++、–有前缀,后缀两种:
(1)a++;a–
(2)++a;–a
以a=10为例
共同点:无论是a++还是++a,对于变量a而言,值都是要递增1的。即:a=11;
不同点:a++或++a,都是表达式,这个表达式的结果是有区别的,表达式a++的结果是:10,而表达式的++a的结果是:11。
int atest() {
int a = 1;
int b = 0;
b = a++;
printf("a++=%d\r\n", b);
printf("a=%d\r\n", a);
int c = 1;
int d = 0;
d = ++c;
printf("++c=%d\r\n", d);
printf("c=%d\r\n", c);
return 0;
}
运行结果:
*++、–的历史故事:*在PDP 11机器上,有两条机器指令 INC(用于递增)、DEC(用于递减),C语言为了对应这两条机器指令,而造的++、–。现在的CPU,写成c=c+1,也能正常运行。甚至有些CPU,没有这俩指令了。