第 1 頁:2.1 C語言的數(shù)據(jù)類型 |
第 2 頁:2.2 常量 |
第 3 頁:2.3 變量 |
第 4 頁:2.4 運(yùn)算符1 |
第 5 頁:2.4 運(yùn)算符2 |
第 6 頁:2.4 運(yùn)算符3 |
第 7 頁:2.5 表達(dá)式 |
第 8 頁:2.6 數(shù)據(jù)類型轉(zhuǎn)換 |
3.邏輯運(yùn)算符
用于邏輯運(yùn)算的邏輯運(yùn)算符有三個(gè):
&&(邏輯與)、||(邏輯或)、!(邏輯非)
其中運(yùn)算符“&&”和“||”是雙目運(yùn)算符,要求有兩個(gè)整型或字符型的運(yùn)算對象,用于連接多個(gè)判定條件,構(gòu)成更復(fù)雜的條件判定;運(yùn)算符“!”是單目運(yùn)算符,用于描述對給定條件的否定判定。
邏輯運(yùn)算產(chǎn)生的結(jié)果也只能是1或0。 1表示邏輯運(yùn)算結(jié)果為“真”;用0表示運(yùn)算結(jié)果為“假”。
在判定一個(gè)運(yùn)算對象的值為“真”或“假”時(shí),以運(yùn)算對象的值不等于零為“真”,運(yùn)算對象的值等于0為“假”。
邏輯運(yùn)算符中,按優(yōu)先級排列為:邏輯非運(yùn)算符!的優(yōu)先級高于邏輯與運(yùn)算符&&,邏輯與運(yùn)算符&&的優(yōu)先級高于邏輯或運(yùn)算符||。另外,&&和||的優(yōu)先級低于關(guān)系運(yùn)算符的優(yōu)先級;!的優(yōu)先級高于算術(shù)運(yùn)算符的優(yōu)先級。邏輯運(yùn)算符||和&&的結(jié)合方向是自左至右,而邏輯運(yùn)算符!的結(jié)合方向是自有至左。
需要特別指出的是,“邏輯與”和“邏輯或”運(yùn)算符分別有以下性質(zhì):
a&&b,僅當(dāng)a為0時(shí),不管b為何值(實(shí)際上不再計(jì)算b),結(jié)果為0。
a||b,僅當(dāng) a為 1時(shí),不管 b為何值(實(shí)際上不再計(jì)算 b),結(jié)果為1。
上述性質(zhì)就是說,對于表達(dá)式a&&b,僅當(dāng)子表達(dá)式a為非零時(shí),才計(jì)算子表達(dá)式b;對于表達(dá)式a||b,僅當(dāng)子表達(dá)式a為0時(shí),才計(jì)算子表達(dá)式b。在具體編寫程序時(shí),也應(yīng)利用以上性質(zhì)。對于兩個(gè)條件的邏輯與,如當(dāng)條件1不成立情況下,條件2的值沒有意義或不可計(jì)算時(shí),邏輯表達(dá)式應(yīng)寫成:
條件l&&條件2
避免在條件1不成立情況下,計(jì)算條件2。如有條件:y/x>2且 x!=0,應(yīng)寫成: x!=0 && y/x>2
當(dāng)X為0時(shí),不會(huì)計(jì)算y/X。而寫成:
y/X>2 && X!=0
是不正確的,因?yàn)楫?dāng) X為0時(shí),不能計(jì)算y/X。對于邏輯或也有類似情況。
由于上述性質(zhì),在計(jì)算連續(xù)的邏輯與和邏輯或運(yùn)算時(shí),實(shí)際上不分優(yōu)先級,而是順序從左至右計(jì)算。在計(jì)算邏輯與運(yùn)算時(shí),若有左運(yùn)算對象的值為0,則不再繼續(xù)計(jì)算邏輯與運(yùn)算,并立即以0為邏輯與運(yùn)算的結(jié)果;在計(jì)算邏輯或運(yùn)算時(shí),若有左運(yùn)算對象的值為1,則不再繼續(xù)計(jì)算邏輯或運(yùn)算,并立即以1為邏輯或運(yùn)算的結(jié)果。在順序計(jì)算邏輯表達(dá)式的過程中,一旦確定了表達(dá)式的最終結(jié)果,就不再繼續(xù)計(jì)算。
4.賦值運(yùn)算符
賦值運(yùn)算的最簡單形式是
變量=表達(dá)式
其中“=”是賦值運(yùn)算符。賦值運(yùn)算的執(zhí)行過程是:
(l)先計(jì)算賦值運(yùn)算符右端的表達(dá)式;
(2)如表達(dá)式的類型與賦值運(yùn)算符左邊的變量類型不同(僅限于基本類型),將表達(dá)式值的類型自動(dòng)轉(zhuǎn)換成變量的類型;
(3)將求得的值賦給變量,即存儲(chǔ)到由變量所占的內(nèi)存中。
簡單地說,計(jì)算表達(dá)式的值,將該值賦給變量。
賦值運(yùn)算也有結(jié)果,經(jīng)賦值運(yùn)算后,賦值表達(dá)式具有賦值后賦位運(yùn)算符左邊變量同樣的類型和值。因賦位運(yùn)算有值,所以可以進(jìn)一步參與運(yùn)算,特別是可以再賦植給其它變量。賦值運(yùn)算符的結(jié)合性是‘邊有至左”的,當(dāng)連續(xù)有多個(gè)賦值運(yùn)算時(shí),則從右至左逐個(gè)賦值。如有變量定義:
int k; double x;
則賦值表達(dá)式:
x= k= 3.5
是先將實(shí)數(shù)3.5自動(dòng)轉(zhuǎn)換成整數(shù)3賦給整型變量k,然后又將整數(shù)3自動(dòng)轉(zhuǎn)換成實(shí)數(shù)3.0賦給實(shí)型變量X。所以,k的值是3,X的值是3.0。
在程序中,經(jīng)常遇到在變量當(dāng)前值的基礎(chǔ)上作某種修正的運(yùn)算。如
x=x+5.0
這類運(yùn)算的特點(diǎn)是:變量既是運(yùn)算對象,又是賦值對象。為避免對同一存儲(chǔ)對象的地址重復(fù)計(jì)算,C語言弓隊(duì)復(fù)合賦值運(yùn)算符。它們是
+=、-=、*=、%=、〈〈=、〉〉= 、&= 、^=、|=
通常,記日為某個(gè)雙目運(yùn)算符,復(fù)合賦值運(yùn)算
xθ=e
其等效的表達(dá)式為
x= xθ(e)
注意,當(dāng)e是一個(gè)復(fù)雜表達(dá)式時(shí),等效表達(dá)式的括號(hào)是必需的。如
y*= a+b
的等效表達(dá)式是y= y*(a+b)
賦值運(yùn)算符和所有復(fù)合賦值運(yùn)算符的優(yōu)先級全相同,并且都是“自右至左”結(jié)合,它們的優(yōu)先級高于遠(yuǎn)號(hào)運(yùn)算符的優(yōu)先級,低于其它所有運(yùn)算符的優(yōu)先級。
5.逗號(hào)運(yùn)算符
逗號(hào)運(yùn)算符“,”用于將若干表達(dá)式連接起來順序地逐個(gè)計(jì)算。連續(xù)返號(hào)運(yùn)算的一般形式為:
表達(dá)式1,表達(dá)式2,…,表達(dá)式n
它的計(jì)算順序是從左到右逐一計(jì)算各表達(dá)式,并以表達(dá)式n的值為連續(xù)逗號(hào)運(yùn)算的結(jié)果。例如,表達(dá)式
x=( i=3, i*2)
使i等于3,X等于6。其實(shí),逗號(hào)運(yùn)算只是把多個(gè)表達(dá)式串聯(lián)起來,在許多情況下,使用逗號(hào)運(yùn)算的目的只是想分別計(jì)算各個(gè)表達(dá)式的值,而并非想使用逗號(hào)運(yùn)算中最后那個(gè)表達(dá)式的值。逗號(hào)運(yùn)算最常用于for結(jié)構(gòu)中,用于給多個(gè)變量登初值,或用于對多個(gè)變量的值逐一修改等。逗號(hào)運(yùn)算符的優(yōu)先級最低,其結(jié)合性是“自左向右”的。
相關(guān)推薦:計(jì)算機(jī)軟考程序員備考:程序設(shè)計(jì)知識(shí)點(diǎn)(1)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |