本文發(fā)布于微信公眾號(hào):三玹
int a = 3;
這行代碼中的 = ,就是賦值運(yùn)算符。
可能有人就要問了,不對吧,這個(gè)在數(shù)學(xué)中不是等于號(hào),表示相等的意思嗎?
沒錯(cuò),= 在數(shù)學(xué)中是表示相等的意思,但是在計(jì)算機(jī)語言當(dāng)中,=是表示賦值,而相等是有另外一種表示方式,下面將會(huì)在算術(shù)運(yùn)算符中解釋的。
那什么是賦值?
給大家說一個(gè)比喻:我有一個(gè)東西,我不想一直拿在手上,想要交給變量 a 這個(gè)人來幫我保管,當(dāng)我要用的時(shí)候,叫 a 過來就可以了。而我將東西交到 a 的手上,這個(gè)過程就叫作賦值。
當(dāng)我想讓 a 幫我保管另外一個(gè)東西,我只需要通過賦值符號(hào)將東西交給 a 就可以。
a = 5;
除此之外,賦值符號(hào)還有如下這些:
賦值運(yùn)算符 | 含義 | 案例 |
+= | 將左邊變量的值加上右邊的值后,重新賦值給左邊的變量。 | c+=a c = c + a |
-= | 將左邊變量的值減去右邊的值后,重新賦值給左邊的變量。 | c-=a c = c - a |
*= | 將左邊變量的值乘以右邊的值后,重新賦值給左邊的變量。 | c*=a c = c * a |
/= | 將左邊變量的值除以右邊的值后,重新賦值給左邊的變量。 | c /= a c = c / a |
%= | 將左邊變量的值除以右邊的值后,將余數(shù)重新賦值給左邊的變量。 | c %= a c = c % a |
<<= | 將左邊的變量的值的二進(jìn)制碼向左移動(dòng)n位后得到的值,重新賦值給左邊的變量。 | a <<= 2 a = a << 2 |
>>= | 將左邊的變量的值的二進(jìn)制碼向右移動(dòng)n位后得到的值,重新賦值給左邊的變量。 | a >>= 2 a = a >> 2 |
&= | 按照位與運(yùn)算符將左邊變量的值和右邊的值計(jì)算后,重新賦值給左邊的變量。 | a &= 2 a = a & 2 |
|= | 按照位或運(yùn)算符將左邊變量的值和右邊的值計(jì)算后,重新賦值給左邊的變量。 | a |= 2 a = a | 2 |
^= | 按照異或運(yùn)算符將左邊變量的值和右邊的值計(jì)算后,重新賦值給左邊的變量。 | a ^= 2 a = a ^ 2 |
里面的一些運(yùn)算符,咱們就來看下面的內(nèi)容。
算術(shù)運(yùn)算符
既然是數(shù)學(xué),肯定是少不了加減乘除這些運(yùn)算的。計(jì)算機(jī)語言中也有相應(yīng)的符號(hào)來表示加減乘除,而且和數(shù)學(xué)中的運(yùn)算符號(hào)還是很相似的。
先來看看,算術(shù)運(yùn)算符有哪些個(gè)(這里假設(shè)兩個(gè)整型int變量 a=3,b=4):
算術(shù)運(yùn)算符 | 含義 | 案例 |
+ | 用于兩數(shù)相加 | a+b == 7 |
- | 用于兩數(shù)相減 | a-b == -1 |
* | 用于兩數(shù)相乘 | a * b == 12 |
/ | 用于兩數(shù)相除 | a / b == 0 |
% | 獲取兩數(shù)相除后的余數(shù) | a % b == 3 |
++ | 累加,每次計(jì)算 +1 | a++ == 4 |
-- | 累減,每次計(jì)算 -1 | a-- == 2 |
關(guān)系運(yùn)算符 | 含義 |
== | 相等 |
!= | 不相等 |
> | 大于 |
< | 小于 |
>= | 大等于 |
<= | 小等于 |
關(guān)系運(yùn)算符在編程中的作用是什么?
通常會(huì)用在后面要說的判斷結(jié)構(gòu)里面。例如,現(xiàn)在都這么高科技了,假設(shè)進(jìn)入網(wǎng)吧需要把身份證放在某個(gè)機(jī)子上進(jìn)行辨別。
那么,這個(gè)就需要進(jìn)行判斷和比較,如果身份證的年齡小等于 18 歲,是不被允許進(jìn)入的,機(jī)子會(huì)發(fā)出警告紅燈。反之,大于18歲的,機(jī)子就呈現(xiàn)綠燈,你就可以進(jìn)去暢快地 hasaki 了!
邏輯運(yùn)算符
邏輯運(yùn)算符通常是也是用在判斷結(jié)構(gòu)中,比如你需要判定多個(gè)條件的時(shí)候,就需要用到這個(gè)邏輯運(yùn)算符。還是去網(wǎng)吧,你首先年齡得達(dá)到吧,其次你錢得帶夠吧,無論哪一個(gè)條件你不滿足,都會(huì)被趕出去的。
那么,C語言中支持哪一些邏輯運(yùn)算符呢?來看下面這個(gè)表格:
邏輯運(yùn)算符 | 含義 |
&& | 與,即所有條件同時(shí)滿足才能執(zhí)行。 |
|| | 或,即只要其中一個(gè)條件滿足就可以執(zhí)行。 |
! | 非,取反邏輯狀態(tài)。即原本條件滿足,加上這個(gè)符號(hào)就不滿足了。 |
關(guān)于邏輯運(yùn)算符,后面在判斷結(jié)構(gòu)中再詳細(xì)展開。
位運(yùn)算符
在計(jì)算機(jī)中,位是最小的存儲(chǔ)單位(bit)。8個(gè)bit組成了一個(gè)字節(jié)(Byte),每個(gè)位里面存放的不是 1 就是 0。因此,位運(yùn)算符主要是針對于二進(jìn)制的運(yùn)算。
位運(yùn)算符 | 含義 |
& | 位與,同時(shí)為 1 才為 1. |
| | 位或,同時(shí)為 0 才為 0. |
^ | 異或,同為 1 或同為 0,都為 0. |
~ | 取反,原本是 1,結(jié)果為 0;原本為 0,結(jié)果為 1. |
<< | 左移,操作的值向左移動(dòng) 1 位。 |
>> | 右移,操作的值向右移動(dòng) 1 位。 |
先來看一下,位與、位或、異或三個(gè)運(yùn)算符的使用:
p | q | p&q | p|q | p^q |
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 |
再來看一下,取反、左移、右移三個(gè)運(yùn)算符的使用。這里設(shè)定 a 的值為 60,對應(yīng)的二進(jìn)制碼為 0011 1100。
運(yùn)算符 | 十進(jìn)制 | 二進(jìn)制 | 十進(jìn)制 | 二進(jìn)制 |
~a | 60 | 0011 1100 | -61 | 1100 0011 |
a<<2 | 60 | 0011 1100 | 240 | 1111 0000 |
a>>2 | 60 | 0011 1100 | 15 | 0000 1111 |
左移、右移運(yùn)算符后面的數(shù)值,二進(jìn)制碼向左或者向右移動(dòng)幾位。
雜項(xiàng)運(yùn)算符
除了以上這些常用的運(yùn)算符之外,C語言中還有一些特別重要的運(yùn)算符:
sizeof()
用來返回變量的內(nèi)存大小。
int a;
sizeof(a); // 4
char c;
sizeof(c); // 1
尋址運(yùn)算符
在前一篇指針文章中有提到這個(gè)運(yùn)算符,&。和位運(yùn)算符中的位與運(yùn)算符&長得一樣,但是作用是完全不同的。
尋址運(yùn)算符是加載變量前面,表示變量的內(nèi)存地址。
int a;
&a; // 00000001
int *p;
三元運(yùn)算符
這是一個(gè)條件表示,問號(hào)前面是一個(gè)判斷表達(dá)式,問號(hào)后面則是式子成立和不成立返回的內(nèi)容。成立將冒號(hào)前面的值賦給變量,不成立就將后面的值賦給變量。
int a = 3 > 4 ? 0 : 1;
最后
關(guān)于運(yùn)算符的知識(shí)就簡單的講到這里了,具體的使用到后面應(yīng)用過程中有用到,會(huì)再次展開說一下。下一篇文章,說一下判斷結(jié)構(gòu)。
最后,非常感謝大家的觀看。大家的支持,是我寫下去的動(dòng)力!