【Day 11】C 语言的赋值运算子

赋值运算子(Assignment operator) : 指的是同时执行「算数运算子或位元运算子」以及「指定运算子」两件工作。(指定运算子即是"=")

C 语言支持的赋值运算子:

运算子 说明
= 把右边运算元的值赋给左边运算元
+= 加且赋值运算子,把左边运算元加上右边运算元的结果赋值给左边运算元
-= 减且赋值运算子,把左边运算元减去右边运算元的结果赋值给左边运算元
*= 乘且赋值运算子,把左边运算元乘以右边运算元的结果赋值给左边运算元
/= 除且赋值运算子,把左边运算元除以右边运算元的结果赋值给左边运算元
%= 取余数且赋值运算子,求两个运算元的余数值赋值给左边运算元
<<= 左移且赋值运算子
>>= 右移且赋值运算子
&= 做完 & 的位元运算的值赋值给左边运算元
|= 做完 | 的位元运算的值赋值给左边运算元
^= 做完 ^ 的位元运算的值赋值给左边运算元

以上表格参考
ITREAD01.COM - C运算子

老样子,我们上程序码!!

#include<stdio.h>
int main(){
	int A = 0;
	A += 2;  //A = A + 2
	printf("A = %d\n", A); 
	A <<= 2; //A = A << 2
	printf("A = %d", A);
	return 0; 
}

下面为输出结果:


程序码里面的"A += 2"就是等於A = A + 2的意思,所以第一次输出 A 会等於 2,而A <<= 2是等於A = A << 2的意思,所以现在 A=2=0010,往左移两次,得到 1000,也就是 8!

还记得小时候刚学会四则运算,老师总告诉我们"先乘除後加减"吗?
在 C 的世界里,运算子的计算也是有顺序的!

运算子的优先顺序 :

  • 算数运算子 -> 比较运算子 -> 逻辑运算子
    一样是先乘除、後加减哦!!如果同一列的运算,优先顺序相同时,是从左至右运算的!

常见运算子的优先顺序:

顺序 运算子
1 ( )小括号
2 +(正数)、-(负数)
3 (1) * (2) / (3) %
4 (1) + (2) -
5 (1) < (2) <= (3) > (4) >=
6 (1) = (2) !=
7 &&
8 ||
9 (1) =(assign) (2) *=、/=、%=、+=、-=

为了让大家更了解,这里有几个小问题 :

#include<stdio.h>
int main(){
    int A = 0;
    printf("%d\n", 50 * (++A) / 5 + 2 % 1);
    printf("A = %d", A);
    return 0;
}

请问以上程序码输出是甚麽呢?
以下是输出结果:

上面的程序码,会先做++A,所以 A=1,然後做(50*1 / 5)+(2 % 1),因为 2 除以 1 的余数为 0,所以我们只要计算(50*1/5)就好,所以答案等於 10 ~ 你答对了吗~我们再看一题!

#include<stdio.h>
int main(){
    int A = 0;
    printf("%d\n", (A++) * 999 * 9 + 100 / 2);
    ++A *= 10 + 5;
    printf("A=%d",A);
    return 0;
}

一样是问上面程序码的输出~请思考一下!
思考完,我们就来看结果!

这题有小小的陷阱,看(A++)*999*9 + 100/2会觉得数字怎麽那麽丑,但是(A++)代表了先计算完,A 才会加 1,所以会等於0*999*9+100/2,这样就会等於 50!
然後,++A *= 10 + 5;的部分是 A 先加 1,会等於 2,然後计算A=A*(10+5),所以最後的结果,A 会等於 30!

好了,我们运算子这个单元已经告一段落了~明天我们来讲讲 C 的条件判断吧!!!


<<:  Day11 - [丰收款] 礼尚往来,我们也需要解开API回传的密秘

>>:  Progressive Web App 用户端储存简介 (13)

[Day14] 引入 crate

我原本预想是在 15 或 16 号开始进入专案实做,结果超进度了。 不过,差距不大,所以没什麽关系。...

Day 06: Python基础必备小知识(上)

那麽在前篇,我们已经安装建置好整个Python运行环境,接下来就可以学习如何编写简单的程序了! 以下...

资料库练习

这次练习沿用的程序码是我铁人赛每篇阅览数。先说一下程序码的改动,原本我只抓阅览数,那这次有多增加发文...

【Day16】TestBench 的撰写技巧

透过 Verilog 完成一个具有特定功能的电路後,并不代表你的工作已经完成了,TestBench...

Day 7 | 清单元件 - 纯文字

Adapter 一笔资讯的内容称为项目(Item),而负责将资料转换成资讯的就是Adapter,Ad...