C語(yǔ)言程序設(shè)計(jì)運(yùn)算符及表達(dá)式_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)運(yùn)算符及表達(dá)式_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)運(yùn)算符及表達(dá)式_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)運(yùn)算符及表達(dá)式_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)運(yùn)算符及表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1C語(yǔ)言程序設(shè)計(jì)運(yùn)算符及表達(dá)式3.1表達(dá)式 C語(yǔ)言的表達(dá)式分為基本表達(dá)式和復(fù)雜表達(dá)式。 基本表達(dá)式是由以下單項(xiàng)構(gòu)成的,即:標(biāo)識(shí)符、常量、字符串字面量和用圓括號(hào)括起來(lái)的表達(dá)式。 將基本表達(dá)式通過(guò)運(yùn)算符連接在一起,就構(gòu)成復(fù)雜表達(dá)式。例如:2+8,a+b,(x-y)/a等。 由表達(dá)式還可組成更大的表達(dá)式。例如:

x=(a+b)%10第1頁(yè)/共60頁(yè)3.2運(yùn)算符及表達(dá)式

運(yùn)算符是在一個(gè)數(shù)學(xué)運(yùn)算中表示相應(yīng)運(yùn)算動(dòng)作的一種符號(hào)。 運(yùn)算符所作用的對(duì)象稱作運(yùn)算分量。第2頁(yè)/共60頁(yè)3.2.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式 在C語(yǔ)言中,基本算術(shù)運(yùn)算符有5個(gè),它們是: +(加)-(減)*(乘)/(除)%(取模)

算術(shù)運(yùn)算符和運(yùn)算分量組成的求值序列稱作算術(shù)表達(dá)式。 要注意運(yùn)算符“/”和“%”的區(qū)別。 運(yùn)算符“/”可以作用于算術(shù)類型。 運(yùn)算符“%”卻只能作用于整型量。

a/b表示兩個(gè)整數(shù)進(jìn)行整除,其結(jié)果是舍棄余數(shù)后所得到的商值。 是取整數(shù)除法的余數(shù),而不管商的值是多少。第3頁(yè)/共60頁(yè)例3-1:算術(shù)運(yùn)算符應(yīng)用示例。/*arithmeticpractice*/#include<stdio.h>voidmain(){inta=99;

intb=5;

intc=11;

intd=3;

intresult;

result=a-b;第4頁(yè)/共60頁(yè)printf("a-b=%d\n",result);

result=b*c;

printf("b*c=%d\n",result);

result=a/b;

printf("a/b=%d\n",result);

result=a%b;

printf("a%%b=%d\n",result);

result=a%d+b/c;

printf("a%%d+b/c=%d\n",result);}第5頁(yè)/共60頁(yè)輸出結(jié)果是:a-b=94b*c=55a/b=19a%b=4a%d+b/c=0第6頁(yè)/共60頁(yè)例3-2:計(jì)算有多個(gè)算術(shù)運(yùn)算符的算術(shù)表達(dá)式。#include<stdio.h>voidmain(){intx,a=3;

floaty;

x=20+25/5*2;

printf("(1)x=%d\n",x);

x=25/2*2;

printf("(2)x=%d\n",x);

x=-a+4*5-6;第7頁(yè)/共60頁(yè)printf("(3)x=%d\n",x);

x=a+4%5-6;

printf("(4)x=%d\n",x);

x=-3*4%-6/5;

printf("(5)x=%d\n",x);

x=(7+6)%5/2;

printf("(6)x=%d\n",x);

y=25.0/2.0*2.0;

printf("(7)y=%f\n",y);}第8頁(yè)/共60頁(yè)輸出結(jié)果是:(1)x=30(2)x=24(3)x=11(4)x=1(5)x=0(6)x=1(7)y=25.000000第9頁(yè)/共60頁(yè)3.2.2賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算符“=”,其簡(jiǎn)單的使用形式是: 變量=表達(dá)式 這種形式的整個(gè)表達(dá)式稱作賦值表達(dá)式。在使用賦值表達(dá)式時(shí)應(yīng)注意以下幾點(diǎn): ①在賦值運(yùn)算符左邊的量(通常稱為左值)必須是變量,不能是常量或用上述運(yùn)算符結(jié)合起來(lái)的表達(dá)式。

inta,b;

a=b;b=8; 是正確的賦值形式;

6=a;a+b=14; 等形式都是不對(duì)的。第10頁(yè)/共60頁(yè) ②賦值運(yùn)算可連續(xù)進(jìn)行。例如,

a=b=c=0 a=(b=(c=0)) ③賦值運(yùn)算符的優(yōu)先級(jí)比上述運(yùn)算符的優(yōu)先級(jí)都低。

a=(b=9)*(c=7) ④賦值表達(dá)式的值等于右邊表達(dá)式的值,而結(jié)果的類型由左邊變量的類型決定。第11頁(yè)/共60頁(yè) ⑤除了上述基本的賦值運(yùn)算符之外,C語(yǔ)言中還提供了另外10個(gè)賦值運(yùn)算符,它們是: +=-=*=/=%=>>=<<=&=|=^= 這些運(yùn)算符是把“運(yùn)算”和“賦值”兩個(gè)動(dòng)作結(jié)合在一起,往往把它們稱為復(fù)合賦值運(yùn)算符。

x+=2其等效形式是:x=x+2。表達(dá)式x*=y(tǒng)+5的等效形式是:x=x*(y+5)。而表達(dá)式x%=y(tǒng)-10的等效形式是:x=x%(y-10)

復(fù)合賦值運(yùn)算符右邊的表達(dá)式應(yīng)作為一個(gè)整體對(duì)待。第12頁(yè)/共60頁(yè) 3.2.3增量運(yùn)算符和增量表達(dá)式 自增運(yùn)算符“++”和自減運(yùn)算符“――”。它們都是單目運(yùn)算符。當(dāng)出現(xiàn)在運(yùn)算分量的前面時(shí),例如++i、――i,就稱之為前綴運(yùn)算符;當(dāng)出現(xiàn)在運(yùn)算分量的后面時(shí),例如x++、y――,就稱之為后綴運(yùn)算符。由增量運(yùn)算符和運(yùn)算分量構(gòu)成的表達(dá)式稱為增量表達(dá)式。

1.自增運(yùn)算符 ++n

這個(gè)表達(dá)式執(zhí)行后,n的值增1。 還可采用“后綴加”的形式:

n++ 但必須指出,并非在任何情況下二者都等價(jià)。第13頁(yè)/共60頁(yè)例3-3:顯示前綴加和后綴加的區(qū)別。#include<stdio.h>voidmain(){inta,b,c;

a=9;

b=++a;第14頁(yè)/共60頁(yè)printf("(1)a=%d***b=%d\n",a,b);

a=9;

c=a++;

printf("(2)a=%d***c=%d\n",a,c);}運(yùn)行后輸出的結(jié)果是:(1)a=10***b=10(2)a=10***c=9第15頁(yè)/共60頁(yè)

執(zhí)行b=++a,這條語(yǔ)句等價(jià)于下述兩條語(yǔ)句:

c=a+1;

b=a; 而改為后綴加形式,即:c=a++,這條語(yǔ)句等價(jià)于下述兩條語(yǔ)句:

c=a;

a=a+1; 簡(jiǎn)而言之,在表達(dá)式中出現(xiàn)前綴加的情況下,前綴加所作用的運(yùn)算分量值先增1,然后進(jìn)行其他級(jí)別較低的運(yùn)算;而在表達(dá)式中出現(xiàn)后綴加的情況下,先以其運(yùn)算分量的當(dāng)前值參與其他級(jí)別較低的運(yùn)算,最后該運(yùn)算分量值才增1。第16頁(yè)/共60頁(yè)

例3-4:復(fù)合賦值符和自增運(yùn)算符“++”的應(yīng)用。

Voidmain(){intx=2,y,z;

x*=3+2;

printf("(1)x=%d\n",x);

x*=y(tǒng)=z=4;

printf("(2)x=%d\n",x);

x=y(tǒng)=1;

z=x++-1;第17頁(yè)/共60頁(yè)printf("(3)x=%d***z=%d\n",x,z);

z=x++*++y;

printf("(4)x=%d***y=%d***z=%d\n",x,y,z);

}輸出結(jié)果是:(1)x=10

(2)x=40

(3)x=2***z=0

(4)x=3***y=2***z=4第18頁(yè)/共60頁(yè)2.自減運(yùn)算符“――n”就等價(jià)于:

n=n-1它也分前綴減和后綴減兩種形式。m=--n;等價(jià)于:n=n-1;

m=n;而m=n--;卻等價(jià)于:m=n;

n=n-1;第19頁(yè)/共60頁(yè)

在使用增量運(yùn)算符時(shí),還應(yīng)注意以下幾點(diǎn): ①增量運(yùn)算符有副作用。就是說(shuō),增量運(yùn)算符作用于運(yùn)算分量時(shí),如“++a”,不僅可以向外提供一個(gè)值,而且還改變運(yùn)算分量自身的值。例如:

x=++i+i

或者x=i+(++i) ②“++”和“――”是單個(gè)運(yùn)算符,不是通常意義上的兩個(gè)“加”號(hào)或者兩個(gè)“減”號(hào)。第20頁(yè)/共60頁(yè) ③x=i+++j; 是理解成(i++)+j,還是i+(++j)呢?C語(yǔ)言詞法分析遵循“最長(zhǎng)匹配”原則,即:如果在兩個(gè)運(yùn)算分量之間連續(xù)出現(xiàn)多個(gè)表示運(yùn)算符的字符(中間沒(méi)有空格),那么,在保證有意義的條件下,就從左到右盡可能多地將若干個(gè)字符組成一個(gè)運(yùn)算符。所以,表達(dá)式就解釋為(i++)+j,而不是i+(++j)。建議讀者在錄入程序時(shí),在各個(gè)運(yùn)算符之間加入空格,或者使用圓括號(hào),把有關(guān)部分括起來(lái),使之作為整體處理。第21頁(yè)/共60頁(yè) ④“++”和“――”只能作用在變量上,如“a++”,“――n”等,而不能用于常量和一般表達(dá)式(不是左值的表達(dá)式)。 另外,增量運(yùn)算符與運(yùn)算分量結(jié)合在一起構(gòu)成的表達(dá)式帶有自身賦值含義,但這種表達(dá)式不是左值,不能直接出現(xiàn)在賦值號(hào)左邊。第22頁(yè)/共60頁(yè)3.2.4關(guān)系運(yùn)算符和關(guān)系表達(dá)式

C語(yǔ)言有完整的一組關(guān)系運(yùn)算符,用于比較兩個(gè)運(yùn)算分量間的大小關(guān)系。這組運(yùn)算符有6個(gè),即: >>=<<===?。? 用關(guān)系運(yùn)算符將兩個(gè)運(yùn)算分量連在一起構(gòu)成的表達(dá)式稱作關(guān)系表達(dá)式。根據(jù)運(yùn)算符所作用的兩個(gè)運(yùn)算分量之間的指定關(guān)系是否成立,分別得到關(guān)系表達(dá)式的“真”、“假”結(jié)果。第23頁(yè)/共60頁(yè)

在C語(yǔ)言中,沒(méi)有表示“真”、“假”的邏輯量TRUE(真)和FALSE(假),就借用數(shù)值來(lái)表示。以數(shù)值0表示“假”,以非0值表示“真”。對(duì)于關(guān)系表達(dá)式來(lái)說(shuō),結(jié)果的真、假分別用1和0表示。 關(guān)系運(yùn)算只判定兩個(gè)運(yùn)算分量是否滿足指定的關(guān)系,而不理睬二者具體數(shù)值相差多少。 應(yīng)注意,賦值號(hào)“=”與全等比較運(yùn)算符“==”的區(qū)別。 關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。

a+b<c+d

應(yīng)理解為:(a+b)<(c+d)

前4個(gè)關(guān)系運(yùn)算符的優(yōu)先級(jí)相同,后兩個(gè)相等比較運(yùn)算符的優(yōu)先級(jí)也相同。但前者的優(yōu)先級(jí)恰好比后者高一級(jí)。第24頁(yè)/共60頁(yè)例3-4:分析下面程序的運(yùn)算結(jié)果。1voidmain()2{3inta,b,c;4a=b=c=10;5a=b==c;6printf("a=%d,b=%d,c=%d\n",a,b,c);7a==(b=c++*2);8printf("a=%d,b=%d,c=%d\n",a,b,c);9a=b>c>=100;10printf("a=%d,b=%d,c=%d\n",a,b,c);11}第25頁(yè)/共60頁(yè)上述程序運(yùn)行之后的輸出結(jié)果是:a=1,b=10,c=10a=1,b=20,c=11a=0,b=20,c=11第26頁(yè)/共60頁(yè)3.2.5條件運(yùn)算符和條件表達(dá)式

C語(yǔ)言中提供的條件運(yùn)算符“?:”是惟一的三目運(yùn)算符。 由條件運(yùn)算符組成的表達(dá)式簡(jiǎn)稱為條件表達(dá)式,或三目表達(dá)式。其一般構(gòu)成形式是: 表達(dá)式1?表達(dá)式2:表達(dá)式3

決定條件表達(dá)式值的方法是:先計(jì)算表達(dá)式1的值;若該值不為0,則計(jì)算表達(dá)式2的值,并將表達(dá)式2的值作為整個(gè)條件表達(dá)式的值;否則,就計(jì)算表達(dá)式3的值,并將該值作為整個(gè)條件表達(dá)式的值。第27頁(yè)/共60頁(yè)

例如,要求出x和y中最大的一個(gè),并賦予變量max。

max=(x>y)?x:y; 使用條件運(yùn)算符時(shí),還要注意以下幾點(diǎn): ①條件運(yùn)算符的優(yōu)先級(jí)稍高于賦值運(yùn)算符,但比其他運(yùn)算符的優(yōu)先級(jí)都低。 ②三個(gè)運(yùn)算分量不限于簡(jiǎn)單的算術(shù)表達(dá)式,甚至可以是函數(shù)調(diào)用。 ③分析條件表達(dá)式時(shí),關(guān)鍵是先找出“?”和“:”,把三個(gè)運(yùn)算分量區(qū)分開(kāi),然后按一般方法進(jìn)行計(jì)算。第28頁(yè)/共60頁(yè)例3-5:分析下面程序運(yùn)行的結(jié)果。1voidmain()2{3inta,b,c;4a=b=c=1;5a+=b;6b+=c;7c+=a;8printf("(1)%d\n",a>b?a:b);9printf("(2)%d\n",a>c?a--:c++);10(a>=b>=c)?printf("AA"):printf("CC");11printf("\na=%d,b=%d,c=%d\n",a,b,c);12}第29頁(yè)/共60頁(yè)3.2.6逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 在C語(yǔ)言中,逗號(hào)的用途主要有兩種:一是作為分隔符,二是作為運(yùn)算符。 (1)逗號(hào)分隔符 用來(lái)分開(kāi)相應(yīng)的多個(gè)數(shù)據(jù)。

inta,b,c;

printf("A=%d\tB=%d\n",a,b);第30頁(yè)/共60頁(yè)

(2)逗號(hào)運(yùn)算符 逗號(hào)作為運(yùn)算符時(shí),是把兩個(gè)運(yùn)算分量“連接”起來(lái),使之構(gòu)成一個(gè)逗號(hào)表達(dá)式。 逗號(hào)表達(dá)式的一般形式是: 表達(dá)式1,表達(dá)式2

它的執(zhí)行過(guò)程是:先計(jì)算表達(dá)式1,然后計(jì)算表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。 逗號(hào)表達(dá)式的擴(kuò)展形式是: 表達(dá)式1,表達(dá)式2,…表達(dá)式n

各個(gè)表達(dá)式必須從左到右順序執(zhí)行,而整個(gè)逗號(hào)表達(dá)式的值是其中最右邊表達(dá)式的值。

x=(i=10,j=5,i*j)

逗號(hào)運(yùn)算符在所有運(yùn)算符中是級(jí)別最低的。第31頁(yè)/共60頁(yè)3.2.7邏輯運(yùn)算符和邏輯表達(dá)式

C語(yǔ)言中邏輯運(yùn)算符有3個(gè),它們是: !邏輯非(相當(dāng)于其他語(yǔ)言中的NOT) &&邏輯與(相當(dāng)于其他語(yǔ)言中的AND) ||邏輯或(相當(dāng)于其他語(yǔ)言中的OR)

其中,“!”是單目運(yùn)算符,而&&和||是雙目運(yùn)算符。第32頁(yè)/共60頁(yè)第33頁(yè)/共60頁(yè)

由邏輯運(yùn)算符和運(yùn)算分量構(gòu)成的表達(dá)式稱為邏輯表達(dá)式。 (1)邏輯非運(yùn)算符! 作用在單個(gè)運(yùn)算分量上,其結(jié)果是運(yùn)算分量邏輯值的“反”。 (2)邏輯與運(yùn)算符&&

作用在前后兩個(gè)運(yùn)算分量上,其結(jié)果是:僅當(dāng)兩個(gè)運(yùn)算分量同時(shí)為真時(shí),結(jié)果才為真;否則,只要其中有一個(gè)為假,結(jié)果就為假。

第34頁(yè)/共60頁(yè)

(3)邏輯或運(yùn)算符||

作用在前后兩個(gè)運(yùn)算分量上,其結(jié)果是:只要其中有一個(gè)運(yùn)算分量為真,結(jié)果就為真;僅當(dāng)二者同時(shí)為假時(shí),結(jié)果才為假。 這三個(gè)邏輯運(yùn)算符的優(yōu)先級(jí)是:!的優(yōu)先級(jí)高于&&的優(yōu)先級(jí),&&的優(yōu)先級(jí)又高于||的優(yōu)先級(jí)。第35頁(yè)/共60頁(yè)

例3-7:判斷給定的某一年是否是閏年。 什么是閏年呢?如果某年號(hào)能被4整除而不能被100整除,或者能被400整除,那么這年就是閏年;否則就是平年。 下面的程序?qū)τ脩糨斎氲哪晏?hào)判別是否是閏年。1/*determingifayearisaleapyear*/2#include<stdio.h>3第36頁(yè)/共60頁(yè)4Voidmain()5{6intyear,leap;7printf("Inputyouryear.\n");8scanf("%d",&year);9leap=y(tǒng)ear%4==0&&year%100!=0||year%400==0;10if(leap)11printf("%disaleapyear.\n",year);12else13printf("%disnotaleapyear.\n",year);14}第37頁(yè)/共60頁(yè)

在使用邏輯運(yùn)算符時(shí)應(yīng)注意以下幾點(diǎn): ①用邏輯運(yùn)算符把運(yùn)算分量連接起來(lái)就構(gòu)成邏輯表達(dá)式。其運(yùn)算分量可以是關(guān)系表達(dá)式、算術(shù)表達(dá)式等,甚至還可以是邏輯表達(dá)式。 ②!的優(yōu)先級(jí)高于算術(shù)運(yùn)算符的優(yōu)先級(jí)。 運(yùn)算符!的結(jié)合性是從右到左,而&&和||的結(jié)合性是從左到右。 ③邏輯表達(dá)式的值只有兩個(gè):0和1。以0代表邏輯結(jié)果為假;以1代表邏輯結(jié)果為真。第38頁(yè)/共60頁(yè) ④運(yùn)算符&&和||保證左邊的運(yùn)算分量?jī)?yōu)先得到計(jì)算。就是說(shuō),由&&和||構(gòu)成的邏輯表達(dá)式嚴(yán)格地從左到右進(jìn)行計(jì)算,并且一旦根據(jù)左分量的值就能確定整個(gè)邏輯表達(dá)式的值時(shí),就不再執(zhí)行后面的運(yùn)算。 例如,

x=y(tǒng)=z=1; ++x||++y&&++z; 執(zhí)行之后,x、y和z的值分別是2,1,1。第39頁(yè)/共60頁(yè)3.2.8位邏輯運(yùn)算符和位邏輯表達(dá)式

1.二進(jìn)制 只用0和1兩個(gè)數(shù)字來(lái)表示所有的數(shù)。二進(jìn)制數(shù)的基本規(guī)則是“逢二進(jìn)一”。

2.八進(jìn)制和十六進(jìn)制 八進(jìn)制數(shù)是以8為基底的數(shù),用到的數(shù)字是0,1,2,…,7,一共8個(gè)。它的基本進(jìn)位規(guī)則是“逢八進(jìn)一”。 八進(jìn)制整常數(shù)是以數(shù)字0開(kāi)頭的八進(jìn)制數(shù)字串。 二進(jìn)制數(shù)與八進(jìn)制數(shù)之間很容易進(jìn)行轉(zhuǎn)換。對(duì)于一個(gè)二進(jìn)制數(shù)來(lái)說(shuō),從右向左每三個(gè)數(shù)字為一組分開(kāi),把每組二進(jìn)制數(shù)轉(zhuǎn)為八進(jìn)制數(shù)表示。第40頁(yè)/共60頁(yè)

將八進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)時(shí),只要將每位八進(jìn)制數(shù)字用三位二進(jìn)制數(shù)表示,串起來(lái)就是相應(yīng)的二進(jìn)制數(shù)。 十六進(jìn)制數(shù)是以十六為基底的數(shù),它由數(shù)字0,1,2,…,9和字母A,B,C,D,E,F(xiàn)(或者a,b,c,d,e,f)來(lái)表示。其基本進(jìn)位規(guī)則是“逢十六進(jìn)一”。 在C語(yǔ)言中,十六進(jìn)制整常數(shù)是以0x或0X開(kāi)頭的十六進(jìn)制數(shù)字串,例如0x12、0X5a8。 二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換也很容易:對(duì)于一個(gè)二進(jìn)制數(shù)來(lái)說(shuō),從右向左每四個(gè)數(shù)字為一組,把每組二進(jìn)制數(shù)用十六進(jìn)制數(shù)字表示。把十六進(jìn)制數(shù)的每一位數(shù)字用四位二進(jìn)制數(shù)表示,串起來(lái)就是相應(yīng)的二進(jìn)制數(shù)。第41頁(yè)/共60頁(yè) 3.原碼、反碼和補(bǔ)碼 在計(jì)算機(jī)內(nèi)表示數(shù)值的方法是不同的,一般有:原碼、反碼和補(bǔ)碼。 (1)原碼 通常,整數(shù)用一個(gè)字長(zhǎng)表示。一般用最左邊的一位(稱作最高位)表示數(shù)的符號(hào):以0代表正,1代表負(fù)。 二進(jìn)制數(shù)的原碼表示形式是:最高位用于符號(hào)位,其余各位是數(shù)值的絕對(duì)值。第42頁(yè)/共60頁(yè)

(2)反碼 正數(shù)的反碼與原碼相同。負(fù)數(shù)的反碼是:原碼除符號(hào)位外(仍為1),各位取反。 (3)補(bǔ)碼 正數(shù)的補(bǔ)碼與原碼相同。除最高位仍為1外,原碼的其余各位求反,最后再加1第43頁(yè)/共60頁(yè)4.位邏輯運(yùn)算符和位邏輯表達(dá)式在C語(yǔ)言中,位邏輯運(yùn)算符有以下4個(gè):&(按位與)|(按位或)~(按位反)^(按位異或)

它們都是按二進(jìn)制一位一位地進(jìn)行運(yùn)算,相鄰位之間不發(fā)生聯(lián)系,即沒(méi)有“進(jìn)位”、“借位”等問(wèn)題,所以稱為位邏輯運(yùn)算符。第44頁(yè)/共60頁(yè)

各個(gè)位邏輯運(yùn)算符的優(yōu)先級(jí)關(guān)系是:~最高,其余3個(gè)運(yùn)算符的優(yōu)先級(jí)從高到低依次是&、^、|,但三者都高于邏輯運(yùn)算符而低于關(guān)系運(yùn)算符。 由位邏輯運(yùn)算符和運(yùn)算分量構(gòu)成的表達(dá)式稱作位邏輯表達(dá)式。 位邏輯運(yùn)算符與邏輯運(yùn)算符之間的區(qū)別: ①位邏輯運(yùn)算符是針對(duì)二進(jìn)制位的,而邏輯運(yùn)算符是針對(duì)整個(gè)表達(dá)式的;位邏輯運(yùn)算符要計(jì)算表達(dá)式的具體數(shù)值,而邏輯運(yùn)算符只判別表達(dá)式的真與假。 ②位邏輯運(yùn)算符&、|和^的兩個(gè)運(yùn)算分量是可交換的;而邏輯運(yùn)算符&&和||的兩個(gè)運(yùn)算分量都是不可交換的,并且它們嚴(yán)格從左到右運(yùn)算。第45頁(yè)/共60頁(yè)3.2.9移位運(yùn)算符和移位表達(dá)式

C語(yǔ)言中實(shí)現(xiàn)移位功能的運(yùn)算符有兩個(gè):<<(左移)和>>(右移)。它們都是雙目運(yùn)算符,并且要求兩個(gè)運(yùn)算分量都是整型量。由移位運(yùn)算符和運(yùn)算分量構(gòu)成的表達(dá)式稱作移位表達(dá)式。 (1)左移運(yùn)算符<< 它的一般使用形式是: 表達(dá)式1<<表達(dá)式2

它的功能是:把表達(dá)式1的值(以二進(jìn)制形式表示)向左移動(dòng)n位,n值由表達(dá)式2確定,并且表達(dá)式2的值必須是正整數(shù)。第46頁(yè)/共60頁(yè)

例如,a=00001011,那么,移位表達(dá)式

a<<3

的結(jié)果是01011000,即:把a(bǔ)的各二進(jìn)位全部向左移3位,右邊空出的位補(bǔ)0,而左邊溢出的位被丟棄不管。第47頁(yè)/共60頁(yè)

(2)右移運(yùn)算符>> 它的一般使用形式是: 表達(dá)式1>>表達(dá)式2

它的功能是:把表達(dá)式1的值(以二進(jìn)制形式表示)向右移n位,n的值由表達(dá)式2確定(該值必須是正整數(shù)) 例如,a=00001011,那么,移位表達(dá)式

a>>3

的結(jié)果是00000001,即:把a(bǔ)的各二進(jìn)位全都向右移3位,右邊溢出的位被丟棄,而左邊空出的位(在本例情況下)補(bǔ)0。 在右移時(shí),要注意符號(hào)位問(wèn)題。第48頁(yè)/共60頁(yè)3.2.10其他運(yùn)算符 (1)&和* 單目運(yùn)算符&用來(lái)取出其運(yùn)算分量的地址,例如,

inta,*p;

p=&a; “*”也是單目運(yùn)算符,它是“&”的逆運(yùn)算。它把運(yùn)算分量(應(yīng)是指針量)所指向的內(nèi)存單元中的內(nèi)容取出來(lái)。例如,

b=*p;第49頁(yè)/共60頁(yè)

(2)強(qiáng)制類型運(yùn)算符()

一般使用形式是:

(類型名)表達(dá)式 它把表達(dá)式的類型強(qiáng)制轉(zhuǎn)換成圓括號(hào)中“類型名”所指定的類型。

(double)a

這是類型的臨時(shí)轉(zhuǎn)換方法。 (3)sizeof

單目運(yùn)算符sizeof用來(lái)計(jì)算某種類型的變量或某種數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)部表示時(shí)所占用的字節(jié)數(shù)。例如:

sizeof(int)第50頁(yè)/共60頁(yè)

(4)單目加“+”和單目減“-”運(yùn)算符 單目加“+”運(yùn)算的結(jié)果仍是其運(yùn)算分量的值 負(fù)號(hào)(―)的運(yùn)算結(jié)果是其運(yùn)算分量的負(fù)值 (5)基本運(yùn)算符

[]()->·

其中,[]用于數(shù)組下標(biāo)的表示,()用于標(biāo)識(shí)函數(shù),“->”和“”用于存取結(jié)構(gòu)或聯(lián)合中的成員。它們的優(yōu)先級(jí)在所有運(yùn)算符中是最高的。第51頁(yè)/共60頁(yè)3.3運(yùn)算符優(yōu)先級(jí)和結(jié)合性第52頁(yè)/共60頁(yè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論