c语言运算程序,C语言运算符
通常我們可把位操作AND作為關(guān)閉位的手段,這就是說(shuō)兩個(gè)操作數(shù)中任一為0的位,其結(jié)果中對(duì)應(yīng)位置為0。例如,下面的函數(shù)通過(guò)調(diào)用函數(shù)read_modem(),從調(diào)制解調(diào)器端口讀入一個(gè)字符,并將奇偶校驗(yàn)位置成0。
字節(jié)的位8是奇偶位,將該字節(jié)與一個(gè)位1到位7為1、位8為0的字節(jié)進(jìn)行與操作,可將該字節(jié)的奇偶校驗(yàn)位置成0。表達(dá)式ch&127正是將ch中每一位同127數(shù)字的對(duì)應(yīng)位進(jìn)行與操作,結(jié)果ch的位8被置成了0。在下面的例子中,假定ch接收到字符"A"并且奇偶位已經(jīng)被置位。
一般來(lái)說(shuō),位的AND、OR和XOR操作通過(guò)對(duì)操作數(shù)運(yùn)算,直接對(duì)結(jié)果變量的每一位分別處理。正是因?yàn)檫@一原因(還有其它一些原因),位操作通常不像關(guān)系和邏輯運(yùn)算符那樣用在條件語(yǔ)句中,我們可以用例子說(shuō)明這一點(diǎn):假定X=7,那么x&&8為T(mén)ure(1),而x&8卻為Flase(0)。
記住,關(guān)系和邏輯操作符結(jié)果不是0就是1。而相似的位操作通過(guò)相應(yīng)處理,結(jié)果可為任意值。換言之,位操作可以有0或1以外的其它值,而邏輯運(yùn)算符的計(jì)算結(jié)果總是0或1。移位操作符>>和<
variable>>右移位數(shù)
左移語(yǔ)句是:
variable<
當(dāng)某位從一端移出時(shí),另一端移入0(某些計(jì)算機(jī)是送1,詳細(xì)內(nèi)容請(qǐng)查閱相應(yīng)C編譯程序用戶(hù)手冊(cè))。切記:移位不同于循環(huán),從一端移出的位并不送回到另一端去,移去的位永遠(yuǎn)丟失了,同時(shí)在另一端補(bǔ)0。
移位操作可對(duì)外部設(shè)備(如D/A轉(zhuǎn)換器)的輸入和狀態(tài)信息進(jìn)行譯碼,移位操作還可用于整數(shù)的快速乘除運(yùn)算。如表2-9所示(假定移位時(shí)補(bǔ)0),左移一位等效于乘2,而右移一位等效于除以2。
每左移一位乘2,注意x<<2后,原x的信息已經(jīng)丟失了,因?yàn)橐晃灰呀?jīng)從一端出,每右移一位相當(dāng)于被2除,注意,乘后再除時(shí),除操作并不帶回乘法時(shí)已經(jīng)丟掉的高位。反碼操作符為~。~的作用是將特定變量的各位狀態(tài)取反,即將所有的1位置成0,所有的0位置成1。位操作符經(jīng)常用在加密程序中,例如,若想生成一個(gè)不可讀磁盤(pán)文件時(shí),可以在文件上做一些位操作。最簡(jiǎn)單的方法是用下述方法,通過(guò)1的反碼運(yùn)算,將每個(gè)字節(jié)的每一位取反。
原字節(jié)?00101100
第一次取反碼?11010011
第二次取反碼?00101100
注意,對(duì)同一行進(jìn)行連續(xù)的兩次求反,總是得到原來(lái)的數(shù)字,所以第一次求反表示了字
節(jié)的編碼,第二次求反進(jìn)行譯碼又得到了原來(lái)的值。可以用下面的函數(shù)encode()對(duì)字符進(jìn)行編碼。
2.6.5??操作符
C語(yǔ)言提供了一個(gè)可以代替某些if-then-else語(yǔ)句的簡(jiǎn)便易用的操作符?。該操作符是三元的,其一般形式為:
EXP1?EXE2:EXP3
3
EXP1,EXP2和EXP3是表達(dá)式,注意冒號(hào)的用法和位置。
操作符“?”作用是這樣的,在計(jì)算EXP1之后,如果數(shù)值為T(mén)rue,則計(jì)算EXP2,并將結(jié)果作為整個(gè)表達(dá)式的數(shù)值;如果EXP1的值為Flase,則計(jì)算EXP3,并以它的結(jié)果作為整個(gè)表達(dá)式的值,請(qǐng)看下例:
x=10;
;y=x>9?100:200;
例中,賦給y的數(shù)值是100,如果x被賦給比9小的值,y的值將為200,若用if-else語(yǔ)句改寫(xiě),有下面的等價(jià)程序:
x=10;if(x>9)y=100;
;elsey=200;
;
有關(guān)C語(yǔ)言中的其它條件語(yǔ)句將在第3章進(jìn)行討論。
2.6.6?逗號(hào)操作符
作為一個(gè)操作符,逗號(hào)把幾個(gè)表達(dá)式串在一起。逗號(hào)操作符的左側(cè)總是作為void(無(wú)值),這意味著其右邊表達(dá)式的值變?yōu)橐远禾?hào)分開(kāi)的整個(gè)表達(dá)式的值。例如:
x=(y=3,y+1);
這行將3賦給y,然后將4賦給x,因?yàn)槎禾?hào)操作符的優(yōu)先級(jí)比賦值操作符優(yōu)先級(jí)低,所以必須使用括號(hào)。實(shí)際上,逗號(hào)表示操作順序。當(dāng)它在賦值語(yǔ)句右邊使用時(shí),所賦的值是逗號(hào)分隔開(kāi)的表中最后那個(gè)表達(dá)式的值。例如,
y=10;x=(y=y-5,25/y);
執(zhí)行后,x的值是5,因?yàn)閥的起始值是10,減去5之后結(jié)果再除以25,得到最終結(jié)果。
。在某種意義上可以認(rèn)為,逗號(hào)操作符和標(biāo)準(zhǔn)英語(yǔ)的and是同義詞。
2.6.7關(guān)于優(yōu)先級(jí)的小結(jié)
表2-10列出了C語(yǔ)言所有操作符的優(yōu)先級(jí),其中包括將在本書(shū)后面討論的某些操作符。注意,所有操作符(除一元操作符和?之外)都是左結(jié)合的。一元操作符(*,&和-)及操作符“?”則為右結(jié)合。
總結(jié)
以上是生活随笔為你收集整理的c语言运算程序,C语言运算符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎么看c语言错误出在哪,请各位大佬帮我看
- 下一篇: c语言不用switch做计算器,超级新手