欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言操作符基礎(chǔ)知識(shí)圖文詳解

 更新時(shí)間:2021年08月20日 14:54:51   作者:落因?yàn)榛ㄩ_(kāi)過(guò)  
這篇文章主要以圖文結(jié)合的方式為大家詳細(xì)介紹了C語(yǔ)言位運(yùn)算基礎(chǔ)知識(shí),感興趣的小伙伴們可以參考一下,希望能給你帶來(lái)幫助

前言

操作符在c語(yǔ)言中有著必不可缺的作用,它們能使一些算法變得簡(jiǎn)單,接下來(lái)就由我來(lái)為大家詳細(xì)解說(shuō)。

1.算術(shù)操作符

+ - * /

這4個(gè)運(yùn)算符均可用于整型和浮點(diǎn)型的運(yùn)算,但只有當(dāng)兩位數(shù)中一位時(shí)浮點(diǎn)型時(shí),才能得出浮點(diǎn)型的結(jié)果。如: 3/2=1, 3/2.0=1.5。

%

取余數(shù),經(jīng)常用于控制一個(gè)數(shù)的范圍。這個(gè)操作符的數(shù)必須為整數(shù),如: 3%2=1,4%3=1。

2.移位操作符

>> (右移操作符) <<(左移操作符)

首先講左移操作符,首先我們要知道電腦存儲(chǔ)一個(gè)數(shù)字是以二進(jìn)制形式存儲(chǔ)的,而存儲(chǔ)又分為原碼,反碼,補(bǔ)碼,在電腦中存的是補(bǔ)碼,打印出來(lái)的是原碼。編譯器有32位和64位的,我這里以32位做測(cè)試。關(guān)于原反補(bǔ)碼我簡(jiǎn)單說(shuō),正數(shù)的原反補(bǔ)碼都相同,原碼的第一位為符號(hào)位,正數(shù)位0,負(fù)數(shù)位1.如下:

而二進(jìn)制可以轉(zhuǎn)化為16進(jìn)制,就是我寫(xiě)的0x開(kāi)頭后面的數(shù)字,記住0x是16進(jìn)制的標(biāo)志,而后面的

可以分為8段每一段都是從右向左數(shù),2^0,2^1,2^2,2^3.如果那位數(shù)是幾就乘以它。

負(fù)數(shù)的反碼與原碼取反,0變1,1變0,但符號(hào)位不變。補(bǔ)碼就是反碼最后一位加1,滿(mǎn)2進(jìn)1.如下:

左移操作符:<<

知道了這些后,左移操作符就很簡(jiǎn)單了,就是左邊丟棄右邊補(bǔ)0,且操作的是補(bǔ)碼

對(duì)于正數(shù)3如下:3<<1

它的作用相當(dāng)于乘以了2,當(dāng)然是移1位。也可以移多位,比如3<<2,3<<3等等。

ps-左移操作符和右移操作符移位時(shí)不能移負(fù)數(shù)位。比如:3<<-2,這是不行的。

右移操作符:>>

右移操作符就相對(duì)于來(lái)說(shuō)較難了。

右移操作符可以分為邏輯右移和算術(shù)右移,邏輯右移就是右邊丟棄,左邊補(bǔ)0(和左移操作符有點(diǎn)類(lèi)似);而算術(shù)右移就是右邊丟棄,左邊補(bǔ)符號(hào)位。下面是-2算術(shù)右移后的結(jié)果

它的作用相當(dāng)于/2。

3.位操作符

3.1 & 按位與

同上述的移位操作符一樣,位操作符也是操作一個(gè)數(shù)的補(bǔ)碼。

比如-1的補(bǔ)碼和-2的補(bǔ)碼:令a=(-1)&(-2)

當(dāng)兩者都為1時(shí)才返回1,只要有一個(gè)時(shí)0就返回0。所有返回:

結(jié)果還是-2.

3.2 | 按位或

| 按位或操作符就是只要有一個(gè)是1,就返回1,全為0才返回0

比如-1和-2,按位或后結(jié)果還是-1

3.3 ^ 按位異或

^ 按位異或 是相同時(shí)返回0,不同時(shí)返回1.符號(hào)位也要變。

-1和-2,按位異或后結(jié)果為正1

3.4 ~ 按位取反

~ 按位取反 每個(gè)二進(jìn)制位0變1 ,1變0。

結(jié)果為0.

4.賦值操作符 =

對(duì)一個(gè)變量進(jìn)行賦值,比如int a;a=5;

5.邏輯操作符

5.1 ! 非

! 又是單目運(yùn)算符,在邏輯運(yùn)算中,優(yōu)先順序最高。非運(yùn)算符的結(jié)果只能是1或者0.

在c語(yǔ)言中規(guī)定一切非0值等同于1.而非運(yùn)算符就是使0變1,1變0.比如!1=0; !0=1。

5.2 && 與

&& 是并且的意思,當(dāng)兩邊的操作數(shù)都為1時(shí),返回結(jié)果位1,兩者只要一個(gè)為0,結(jié)果就為0.

比如令a=1&&2,a的結(jié)果時(shí)1,a=0&&2,結(jié)果為0.

5.3 || 或

|| 操作符,當(dāng)兩個(gè)操作數(shù)只要有一個(gè)為1,返回結(jié)果就為1,全為0,返回結(jié)果為0.

6.條件運(yùn)算符 ?

? 是c語(yǔ)言中唯一一個(gè)三目操作符,它連接三個(gè)運(yùn)算量

一般形式為: 表達(dá)式1?表達(dá)式2:表達(dá)式3

當(dāng)表達(dá)式1的結(jié)果為非0時(shí),返回表達(dá)式2的值

當(dāng)表達(dá)式1結(jié)果為0時(shí),返回表達(dá)式3的值

如:

int a=2,b=3,c=4,d;
d=(a<b)?a:c;

7.單目操作符

7.1 !

詳見(jiàn)5.1

7.2 + 正值

7.3 - 負(fù)值

7.4 & 取地址

c語(yǔ)言中,每個(gè)變量都有一個(gè)地址,該操作符用來(lái)獲取變量在內(nèi)存中的地址。一般形式為&變量名。

取地址符的運(yùn)算對(duì)象只能是變量,他的運(yùn)算結(jié)果是變量的存儲(chǔ)地址,一個(gè)變量會(huì)占據(jù)多個(gè)字節(jié),而每個(gè)字節(jié)都有地址,其中最小的地址代表變量地址。

7.5 sizeof

求字節(jié)長(zhǎng)度比如求一個(gè)數(shù)組的字節(jié)大小會(huì)包含數(shù)組內(nèi)的所有元素。

比如說(shuō)這個(gè)圖,數(shù)組arr是int類(lèi)型的,而里面包含6個(gè)元素,所以他的字節(jié)長(zhǎng)度為24,而arr[0]是一個(gè)int類(lèi)型字節(jié)長(zhǎng)度為4.看到第三個(gè),你們想到了什么?沒(méi)錯(cuò),他能用來(lái)求一個(gè)數(shù)組內(nèi)有多少個(gè)元素,因?yàn)榭傋止?jié)長(zhǎng)度除以一個(gè)元素字節(jié)長(zhǎng)度,不就能得到數(shù)組中總共有多少個(gè)元素嘛!

7.6 (強(qiáng)制類(lèi)型轉(zhuǎn)換)

可以將一個(gè)類(lèi)型強(qiáng)制轉(zhuǎn)換為另一個(gè)類(lèi)型,一般形式(類(lèi)型)變量或常量。

7.7 ++ --自增自減

這里自增自減又分為兩種,前置++和后置++,如a++或++a,這兩者是不同的,前者為先使用a再對(duì)a進(jìn)行加1,后者為先加1再使用。簡(jiǎn)單舉個(gè)例子:

c和d前置和后置的結(jié)果時(shí)不同的,雖然對(duì)于c和d的結(jié)果不同,但對(duì)a和b的操作都是加了1。

自減就和自增一樣嘍。

7.8 * 解引用

“引用”這個(gè)詞,出現(xiàn)最多的場(chǎng)景就是:在文章或者注腳里,寫(xiě)上“引用(或摘自)某某作者某篇文章”,意思很明了,就是出現(xiàn)在本文的不是作者自己的話,而是別個(gè)作者的話,于是“引用”的意思就是拿過(guò)來(lái)用。還可以把“解引用”理解為“解碼”。假設(shè)ptr里存放的是一個(gè)內(nèi)存地址,那么*ptr就是這個(gè)內(nèi)存地址里存放的數(shù)據(jù)。前面這個(gè)“*”的解引用操作,就可以理解為對(duì)這個(gè)ptr進(jìn)行解碼,解碼得到的數(shù)據(jù)就是*ptr,也就是我們常說(shuō)的“這個(gè)內(nèi)存地址里存放的數(shù)據(jù)”或者“這個(gè)指針指向的數(shù)據(jù)”。“指針”的理解模式太容易混淆,而“解碼”的理解模式更好記一點(diǎn)。

8. 逗號(hào)表達(dá)式

一般形式(表達(dá)式1,表達(dá)式2,表達(dá)式3,·······)

逗號(hào)表達(dá)式一般用來(lái)判斷,他的運(yùn)算結(jié)果時(shí)最后一個(gè)表達(dá)式,但并非就是說(shuō)前面的表達(dá)式就不需要看了,因?yàn)樗膱?zhí)行順序是從左往右。

就比如這個(gè),由于我用了一個(gè)逗號(hào)表達(dá)式,因此循環(huán)停下來(lái)的條件是j小于4,但j一直等于0,又沒(méi)有對(duì)其進(jìn)行任何操作,所有它陷入了死循環(huán),就會(huì)一直打印hehe。而在正常情況下:

再比如:

9. 關(guān)系操作符 == >= <= != > < =

> < =這幾個(gè)操作符就不要多說(shuō)了吧。

9.1 ==

測(cè)試是否等于,在判斷字符串是否有相等的時(shí),必須要用==,而不能用=。

在if語(yǔ)句中必須用==,而不能用=,=在c語(yǔ)言中是賦值,不能將它理解為數(shù)學(xué)中的等于。

9.2 !=

!= 不等于,也通常用于if語(yǔ)句中,來(lái)判斷變量是否滿(mǎn)足條件。

9.3 >= <=

大于或等于,小于或等于,也一般用于判斷語(yǔ)句中。

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C語(yǔ)言和go語(yǔ)言之間的交互操作方法

    C語(yǔ)言和go語(yǔ)言之間的交互操作方法

    下面小編就為大家?guī)?lái)一篇C語(yǔ)言和go語(yǔ)言之間的交互操作方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Qt連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查的圖文教程

    Qt連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查的圖文教程

    QT連接數(shù)據(jù)庫(kù)是應(yīng)用開(kāi)發(fā)的常用基礎(chǔ)操作,經(jīng)過(guò)實(shí)驗(yàn)我總結(jié)了一些例程,下面這篇文章主要給大家介紹了關(guān)于Qt連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • C++?set的使用示例詳解

    C++?set的使用示例詳解

    序列式容器如vector、list等存儲(chǔ)數(shù)據(jù)的邏輯結(jié)構(gòu)為線性序列,元素的存儲(chǔ)和訪問(wèn)是按位置順序進(jìn)行的,而關(guān)聯(lián)式容器如set、map等,本文給大家介紹C++?set的使用示例詳解,感興趣的朋友一起看看吧
    2024-10-10
  • 解讀C++11 原生字符串

    解讀C++11 原生字符串

    這篇文章主要介紹了C++11 原生字符串的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++11,感興趣的朋友可以了解下
    2020-08-08
  • 基于C語(yǔ)言的庫(kù)封裝發(fā)布技術(shù)詳解

    基于C語(yǔ)言的庫(kù)封裝發(fā)布技術(shù)詳解

    在編程的過(guò)程中,使用已經(jīng)封裝好的庫(kù)函數(shù)是十分方便的,也是十分高效的,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言庫(kù)的封裝和使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • c語(yǔ)言中十六進(jìn)制轉(zhuǎn)二進(jìn)制顯示的實(shí)現(xiàn)方法

    c語(yǔ)言中十六進(jìn)制轉(zhuǎn)二進(jìn)制顯示的實(shí)現(xiàn)方法

    本篇文章對(duì)c語(yǔ)言中十六進(jìn)制轉(zhuǎn)二進(jìn)制顯示的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++解析wav文件方法介紹

    C++解析wav文件方法介紹

    最近將項(xiàng)目改為跨平臺(tái),于是音頻模塊從微軟的XAudio2改用OpenAL庫(kù)。之前使用MSDN的代碼,所以現(xiàn)在改為了C++標(biāo)準(zhǔn)的寫(xiě)法,適用性更廣
    2022-09-09
  • C++while和do-while語(yǔ)句求和詳解

    C++while和do-while語(yǔ)句求和詳解

    對(duì)于C語(yǔ)言中的while與do-while,相信很多都再熟悉不過(guò)了,最近在工作中就用到了,所以想著總結(jié)一下,方便自己或者有需要的朋友們參考借鑒,文中通過(guò)示例代碼介紹的很詳細(xì),感興趣的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • java string對(duì)象上的操作,常見(jiàn)的用法你知道嗎

    java string對(duì)象上的操作,常見(jiàn)的用法你知道嗎

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java String類(lèi)用法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言的字符空間與非字符空間你了解嗎

    C語(yǔ)言的字符空間與非字符空間你了解嗎

    這篇文章主要介紹了C語(yǔ)言的字符空間與非字符空間,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下,希望能給你帶來(lái)幫助
    2021-08-08

最新評(píng)論