熱心網(wǎng)友

計(jì)算機(jī)具有邏輯判斷能力,其判斷的依據(jù)是計(jì)算機(jī)內(nèi)部進(jìn)行邏輯運(yùn)算的結(jié)果。C語言提供了關(guān)系運(yùn)算和邏輯運(yùn)算,用來構(gòu)造C程序控制中的條件,實(shí)現(xiàn)程序的選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)控制?! £P(guān)系運(yùn)算和邏輯運(yùn)算的結(jié)果都是邏輯值,即"真"和"假"。由于C語言中沒有邏輯型數(shù)據(jù),因此C語言規(guī)定用整型數(shù)據(jù)來表示邏輯值。即:用整數(shù)值1表示邏輯"真",用整數(shù)值0表示邏輯"假"。在C語言中,將非0就視為"真"。3。4。1 關(guān)系運(yùn)算符與關(guān)系表達(dá)式  1。 關(guān)系運(yùn)算符  關(guān)系運(yùn)算實(shí)際上是邏輯比較運(yùn)算,它是邏輯運(yùn)算中的一種。關(guān)系運(yùn)算符的作用是確定兩個(gè)數(shù)據(jù)之間是否存在某種關(guān)系。C語言規(guī)定的6種關(guān)系運(yùn)算符及其有關(guān)的說明見表3-6?! ”?-6 算術(shù)運(yùn)算符  運(yùn)算符 含義 運(yùn)算對(duì)象個(gè)數(shù) 結(jié)合方向 簡(jiǎn)例   大于 雙目運(yùn)算符 自左至右 ab,38    = 大于等于 雙目運(yùn)算符 自左至右 a=b,3=2  3*c 兩個(gè)算術(shù)表達(dá)式的值作比較  (a=b)c) 兩個(gè)關(guān)系表達(dá)式的值作比較  'A'!='a' 兩個(gè)字符表達(dá)式的值作比較  關(guān)系式只有兩種可能的結(jié)果:或者它所描述的關(guān)系成立,或者這個(gè)關(guān)系不成立,所以說一個(gè)關(guān)系表達(dá)式描述的是一種邏輯判斷。若關(guān)系成立,說明關(guān)系式表述的關(guān)系是"真"的,稱邏輯值為"真",用1表示;若關(guān)系不成立,說明關(guān)系式表述的關(guān)系是"假"的,稱邏輯值為"假",用0表示。所以關(guān)系表達(dá)式的運(yùn)算結(jié)果一定是邏輯值。  進(jìn)行關(guān)系運(yùn)算時(shí),先計(jì)算表達(dá)式的值,然后再進(jìn)行關(guān)系比較運(yùn)算。例如:  a=2,b=3,c=4,則上述關(guān)系表達(dá)式的值為:  a+b3*c (512)關(guān)系不成立 表達(dá)式結(jié)果值為0(假)  (a+=b)c) (1==0)關(guān)系不成立 表達(dá)式結(jié)果值為0(假)  'A'!='a' (65!=97)關(guān)系成立 表達(dá)式結(jié)果值為1(真)  以關(guān)系表達(dá)式"a+b3*c"為例,因?yàn)樗阈g(shù)運(yùn)算的優(yōu)先級(jí)高于關(guān)系運(yùn)算,所以先計(jì)算a+b和3*c的值,結(jié)果分別為5和12,再將5和12進(jìn)行關(guān)系比較,其運(yùn)算結(jié)果為0?! ≡诒磉_(dá)式中連續(xù)使用關(guān)系運(yùn)算符時(shí),要注意正確表達(dá)含義,注意運(yùn)算優(yōu)先級(jí)和結(jié)合性?! ±?,變量x的取值范圍為"0≤x≤20"時(shí),不能寫成"08&&a==b  || 邏輯或 雙目運(yùn)算符 自左向右 a||b,3b) && (xy) 的值為1?! 、?ab && xy 的值為1?! ∽⒁猓孩佗趦墒绞堑葍r(jià)的,因?yàn)?&&"運(yùn)算優(yōu)先級(jí)低于關(guān)系運(yùn)算,故括號(hào)可以省略?! 、?(y||b) && (y||a) 的值為1。 ?、?y||b && y||a 的值為1?! ∽⒁猓孩邰軆墒浇Y(jié)果雖然一樣,但兩式的含義不同。③式中由于括號(hào)的優(yōu)先級(jí)高于"&&",因此,先計(jì)算"y||b"和"y||a"后,再將兩個(gè)結(jié)果進(jìn)行"&&"運(yùn)算。而④式由于"&&"的優(yōu)先級(jí)高于"||",故要先計(jì)算"b&&y",其結(jié)果為0,再計(jì)算"y||0",其值也為0,最后計(jì)算"0||a",結(jié)果為1。由此可見,運(yùn)算符的優(yōu)先級(jí)制約著表達(dá)式的計(jì)算次序?! 、?!a || ab 的值為1。  此式中"!"的優(yōu)先級(jí)高于">",而 ">"的優(yōu)先級(jí)高于"||",故先計(jì)算"!a",其值為0,再計(jì)算"ab",其值為1,最后計(jì)算"0||1",值為1。3。4。3 條件運(yùn)算符與條件表達(dá)式  條件運(yùn)算符是C語言中唯一具的三目運(yùn)算符,就是說它有三個(gè)運(yùn)算對(duì)象。條件運(yùn)算符的形式是"? :"由它構(gòu)成的表達(dá)式稱為條件表達(dá)式。其形式為:  表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3   條件運(yùn)算符的"?"個(gè)":"總是成對(duì)出現(xiàn)的。條件表達(dá)式的運(yùn)算功能是:先計(jì)算表達(dá)式1的值,若值為非0,則計(jì)算表達(dá)式2的值,并將表達(dá)式2的值作為整個(gè)條件表達(dá)式的結(jié)果;若表達(dá)式1的值為0,則計(jì)算表達(dá)式3的值,并將表達(dá)式2的值作為整個(gè)條件表達(dá)式的結(jié)果。例如有以下條件表達(dá)式:  (ab)?a+b:a-b  當(dāng)a=8,b=4,c=3時(shí),求解條件表達(dá)式的過程如下:  先計(jì)算關(guān)系式ab,結(jié)果為1,因其值為真,則計(jì)算a+b的結(jié)果為12,這個(gè)12就是整個(gè)條件表達(dá)式的結(jié)果。請(qǐng)?zhí)貏e注意,此時(shí)不再計(jì)算表達(dá)式a-b了。如果關(guān)系式ab的結(jié)果為0,就不再計(jì)算表達(dá)式a+b了。這一點(diǎn)在應(yīng)用中很重要?! l件表達(dá)式的優(yōu)先級(jí)高于賦值運(yùn)算,但低于所有關(guān)系運(yùn)算、邏輯運(yùn)算和算術(shù)運(yùn)算。其結(jié)合性是自右向左結(jié)合,當(dāng)多個(gè)條件表達(dá)式嵌套使用時(shí),每個(gè)后續(xù)的":"總與前面最近的、沒有配對(duì)的"?"相聯(lián)系。例如在條件表達(dá)式"a0 ? a/b:a0 ? a/b:"組合?! ∈褂脳l件表達(dá)式可以使程序簡(jiǎn)潔明了。例如,賦值語句"z=(ab)?a:b "中使用了條件表達(dá)式,很簡(jiǎn)潔地表示了判斷變量a與b的最大值并賦給變量z的功能。所以,使用條件表達(dá)式可以簡(jiǎn)化程序  例3-8:定義高等數(shù)學(xué)中常用的符號(hào)函數(shù)sign的數(shù)學(xué)定義如下。?! ?duì)應(yīng)的C函數(shù)定義如下:  /* L3_8。C */  double sign(double x)  { return x0 ? 1:(x==0 ? 0:-1);  }。