日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

操作符和表达式

發(fā)布時(shí)間:2023/11/27 生活经验 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作符和表达式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.??操作符

1.??????算術(shù)操作符

+? -? *?/? %

除了%之外其余的幾個(gè)操作符既可以用于計(jì)算整型也可以用于計(jì)算浮點(diǎn)型數(shù)據(jù),%只能計(jì)算整型數(shù)據(jù),得到的結(jié)果是余數(shù)

2.??????移位操作符

<<??? 左移位操作符???? >>?右移位操作符

<<左移時(shí),值最左邊的幾位被丟棄,右邊多出來的幾個(gè)空位由0補(bǔ)齊。

>>右移時(shí),從左邊移入新位有兩種方式。一種方案是邏輯移位,左邊移入的數(shù)由0填齊;另一種是算術(shù)移位,左邊移入的數(shù)由原先該值得符號(hào)位決定,符號(hào)位為1則移入的為均為1,符號(hào)位為0則移入的位為0。

警告:

標(biāo)準(zhǔn)說明無符號(hào)執(zhí)行的所有的移位操作都是邏輯移位,但是對(duì)于有符號(hào)值,移位操作取決于自己的編譯器。一個(gè)程序如果使用有符號(hào)是數(shù)的右移操作,那么它是不可移植的。

如果出現(xiàn)下面的移位操作:a<<-5

標(biāo)準(zhǔn)說明這類移位是未定義的,所以它由編譯器來決定,這種結(jié)果是不可預(yù)測(cè)的,使用這樣的程序也是不可移植的,我們應(yīng)該避免這類的移位操作。

3.??????位操作符

&??? |????? ^

&與操作符:當(dāng)兩個(gè)位進(jìn)行與操作時(shí),如果兩個(gè)位都是1,結(jié)果為1,否則為0;

|或操作符:兩個(gè)位中有至少有一個(gè)位為1,結(jié)果為1,否則為0;

^異或操作符:兩個(gè)位不同時(shí)結(jié)果為1,如果兩個(gè)位相同,結(jié)果為0.

上面的三個(gè)操作符要求兩個(gè)數(shù)位整型。

?

下面介紹幾種位的操縱:

(1)????將某一位置為1

value = value | (1<<number)

(2)????將某一位置為0

value = value &~ (1<<number)???????? ~是取反的意思

(3)????對(duì)某一位進(jìn)行為1測(cè)試

value = value &(1<<number)

如果該位已經(jīng)是1,則表達(dá)式的結(jié)果為非0值

4.??????賦值

=

賦值操作符的結(jié)合性是從右到左,所以下面的這個(gè)語句a = x = y + 3;他的意思和下面的語句是等價(jià)的a = (x = y + 3);

復(fù)合賦值符

+=??? -=???? *=?/=? %=?

<<=??>>=?? &=? ^=? |=

5.??????單目操作符

!? ++? -?&? sizeof

~? --? +?*? (類型)

!操作符,對(duì)它的操作數(shù)進(jìn)行邏輯反操作,如果操作數(shù)為真,其結(jié)果為假,如果操作數(shù)為假,其結(jié)果為真。這個(gè)操作數(shù)的結(jié)果只有兩個(gè)值,0或1。

~操作符,對(duì)整類型的操作數(shù)進(jìn)行求補(bǔ)操作,操作數(shù)中原先所有為1的位置為0,為0的位置為1。

-產(chǎn)生的操作值為負(fù)值

&操作數(shù)產(chǎn)生它的操作數(shù)的地址

*操作符是間接訪問操作符,它與指針一起使用,用于訪問指針?biāo)赶虻闹怠izeof操作符判斷它的操作數(shù)的類型長(zhǎng)度,以字節(jié)為單位表示。

(類型)操作符是強(qiáng)制類型轉(zhuǎn)換,它用于顯式的將表達(dá)式的值轉(zhuǎn)換為另外的類型。

++和—操作符,注意前置和后置就好,前置是先計(jì)算后使用,后置是先使用后計(jì)算

6.??????關(guān)系操作符

>??? >=???<??? <=??? !=???==???

需要注意的是,這些操作符產(chǎn)生的結(jié)果不是布爾值,而是整型值,如果對(duì)返回1,如果不對(duì)返回的是0。這里我們?cè)谑褂?#61;=操作符的時(shí)候,應(yīng)該特別注意的是不要把==寫成了=。

7.??????邏輯操作符

&&??? ||

&& 邏輯與?? expressionl1? &&?expression2? 兩真才真,一假就假

一個(gè)有趣的點(diǎn)就是,&&的優(yōu)先級(jí)比<,>等的優(yōu)先級(jí)低,所以如果是下面的表達(dá)式, a>5 && a<10,則實(shí)際的求值順序是下面這個(gè)樣子的:(a>5)&& (a<10),但是有一點(diǎn)需要引起大家的注意,就是如果a>5這個(gè)表達(dá)式的結(jié)果為假,那么后面的a<10根本不進(jìn)行判斷,并且整個(gè)表達(dá)式的結(jié)果為假。

|| 邏輯或??? expressionl1? ||??expression2? 一真就真,兩假才假

邏輯或操作符也有一個(gè)有趣的特點(diǎn)就是,如果第一個(gè)表達(dá)式的結(jié)果是真,那么第二個(gè)表達(dá)式也不進(jìn)行求解,并且整個(gè)表達(dá)式的結(jié)果為真。

上面的這兩種行為被稱為“短路求值”

8.??????條件操作符

expressionl1 ? expression2 : expression3??? 操作的過程是,首先判斷expressionl1的值是不是真,如果為真則執(zhí)行expression2,如果為假則執(zhí)行expression3

9.??????逗號(hào)操作符

expressionl1 , expression2 , …… , expression? 操作的過程是從左到右依次對(duì)各個(gè)表達(dá)式進(jìn)行求值,整個(gè)表達(dá)式的值就是最后一個(gè)表達(dá)式的值。

10.??下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員

下標(biāo)引用主要出現(xiàn)在數(shù)組中arry[下標(biāo)]? 和? *( arry + (下標(biāo)) )

函數(shù)調(diào)用操作符 就是在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)

結(jié)構(gòu)成員 是在結(jié)構(gòu)體中使用 . 和 –> 用于訪問結(jié)構(gòu)體的一個(gè)成員,我們需要注意一點(diǎn)是,當(dāng)我們?cè)L問結(jié)構(gòu)體的一個(gè)成員的時(shí)候,我們已經(jīng)知道這個(gè)結(jié)構(gòu)體了,我們可以使用例如s.a,但是如果我們此時(shí)擁有的是指向該結(jié)構(gòu)體的一個(gè)指針而不是這個(gè)結(jié)構(gòu)體,那么我們應(yīng)該使用的是 -> 。

二.??布爾值

C語言不具備顯示的布爾值,但是可以用整數(shù)來代替,其規(guī)則是0是假,非0為真

三.??左值和右值

左值是放在賦值符左邊的東西,右值就是放在賦值符號(hào)的右邊的東西。

簡(jiǎn)單的理解一下就是左值就是這個(gè)變量本身,右值則是變量的內(nèi)容,以后還會(huì)詳細(xì)介紹關(guān)于左值和右值的理解

四.??表達(dá)式求值

1.??????隱式類型轉(zhuǎn)換

C語言一般為了獲得一個(gè)精度,表達(dá)式中的字符型和短整型首先被轉(zhuǎn)換成普通的整型,然后再進(jìn)行計(jì)算,這種方式被稱為整型提升。如下面的求值例子:

char a,b,c;

a = b + c;

b和c的值被提升為普通整型,然后進(jìn)行加法運(yùn)算,加法運(yùn)算的結(jié)果將被截短,然后再存儲(chǔ)在a中。

2.??????算術(shù)轉(zhuǎn)換

如果某個(gè)操作符的各個(gè)操作數(shù)的類型不一樣,那么除非其中一個(gè)轉(zhuǎn)換成另一個(gè),否則無法計(jì)算,下面的層次被稱為尋常算術(shù)轉(zhuǎn)換。

? long double

? double

? float

? usinged long int

? long int

? usinged int

? int

如果某個(gè)操作數(shù)的類型在上面的列表排名較低,那么它首先將轉(zhuǎn)換成比它排名高的,然后再進(jìn)行計(jì)算。

3.??????操作符的屬性

復(fù)雜表達(dá)式的求值順序是由3個(gè)因素決定的:操作符的優(yōu)先級(jí)、操作符的結(jié)核性和操作符是否控制執(zhí)行的順序。

下表顯示了各個(gè)操作符的優(yōu)先級(jí)


4.??????優(yōu)先級(jí)和求值的順序

兩個(gè)相鄰的操作符的執(zhí)行順序由它們的優(yōu)先級(jí)決定,如果它們的優(yōu)先級(jí)相同,它們的執(zhí)行順序由它們的結(jié)合性決定。除此之外,編譯器可以自由的決定使用任何順序?qū)Ρ磉_(dá)式進(jìn)行求值,只要它不違背逗號(hào)、&&、||、和?:操作符所施加的操作。

看下面的語句:

a * b + c * d + e * f

這里并沒有任何規(guī)則要求所有的乘法首先進(jìn)行,也沒有規(guī)定這幾個(gè)乘法之間誰先執(zhí)行。優(yōu)先級(jí)在這里沒有作用,優(yōu)先級(jí)只對(duì)相鄰的操作符的執(zhí)行順序起作用。

下面的這條語句是危險(xiǎn)的:c + --c,因?yàn)樵诓煌木幾g器下面結(jié)果是不一樣的,感興趣的同學(xué)可以上網(wǎng)搜索或者自己測(cè)試分析一下。

?

?

總結(jié)

以上是生活随笔為你收集整理的操作符和表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。