68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞?lì)^條 >> 賦值表達(dá)式
新聞資訊
NEWS INFORMATION

賦值表達(dá)式

發(fā)布時(shí)間:2019-05-22

 算術(shù)表達(dá)式

知識(shí)點(diǎn):運(yùn)算符號(hào)的優(yōu)先級(jí)別;強(qiáng)制類型轉(zhuǎn)換的使用;

重要程度:★★★★

1、算術(shù)運(yùn)算符與算術(shù)表達(dá)式

1、在C語言中,有下列五個(gè)基本的算術(shù)運(yùn)算符:+、-、*、/和%,依次表示加、減、乘、除、求

余運(yùn)算。(考得最多的是/ 和%符號(hào)。。。

 

2、求余運(yùn)算符%的運(yùn)算對(duì)象只能是整型,即%左側(cè)的被除數(shù)與右側(cè)的除數(shù)都只能為整型值。

求余得到的運(yùn)算結(jié)果的符號(hào)與被除數(shù)相同。(3%1.2錯(cuò)了

如:12%9運(yùn)算結(jié)果為3,12%-9的運(yùn)算結(jié)果也為3。

-12%9運(yùn)算結(jié)果為-3,-12%-9的運(yùn)算結(jié)果也為-3。

 

3、求余就是求余數(shù),而不是求商,這點(diǎn)總是容易被弄混淆。

²  想一想:3%9運(yùn)算結(jié)果為多少??(結(jié)果為3而不是0)

 

4、1/2得到的數(shù)據(jù)是為0的,這個(gè)原則是當(dāng)除號(hào)“/“左右兩邊都為整數(shù)的時(shí)候,我們遵守取整丟小數(shù)的原則。那么如果希望1和2相除得到0.5,我們就可以用1.0/2,或者1/2.0,或者1.0/2.0都可以實(shí)現(xiàn)。

 

先面通過一個(gè)具體例子的分析,我們來徹底搞清楚算術(shù)運(yùn)算符的運(yùn)算規(guī)則。

1試求  1.6+3/2*1.2-3/2.0  的值

步驟:

計(jì)算過程:

說明:

第一步:

1.6+1*1.2-3/2.0

根據(jù)運(yùn)算優(yōu)先級(jí)和結(jié)合的順序,先算3/2,注意到它們?yōu)檎蛿?shù)據(jù)相運(yùn)算,因此結(jié)果應(yīng)為整數(shù)1,而不是1.5。

第二步:

1.6+1.0*1.2-3.0/2.0

1*1.2為整型和實(shí)型數(shù)據(jù)相運(yùn)算,因此,會(huì)把整型數(shù)據(jù)1轉(zhuǎn)換為對(duì)應(yīng)的實(shí)型數(shù)據(jù)1.0,再與1.2進(jìn)行運(yùn)算。同理,3變成3.0

第三步:

1.6+1.2-1.5

分別計(jì)算出  1.0*1.2  和 3.0/2.0 的結(jié)果

第四步:

2.8-1.5

同一優(yōu)先級(jí)的運(yùn)算,從左到右依次進(jìn)行

第五步:

1.3

結(jié)果為1.3,而不是1.9

下面,大家自己算算,表達(dá)式3.6-5/2+1.2+5%2的值應(yīng)該是多少?

A)4.3     B)4.8     C)3.3      D)3.8

分析:根據(jù)表3列出的算術(shù)運(yùn)算符優(yōu)先級(jí),本題目應(yīng)先計(jì)算5/2與5%2得到2和1,然后再計(jì)算3.6-2+1.2+1,得到答案D。

   

2、強(qiáng)制類型轉(zhuǎn)換

在進(jìn)行算術(shù)運(yùn)算時(shí),如果希望將某一運(yùn)算量轉(zhuǎn)換成指定的類型,則可以利用強(qiáng)制類型轉(zhuǎn)換符。

強(qiáng)制類型轉(zhuǎn)換表達(dá)式為:(類型名)表達(dá)式

其中,“(類型名)”是強(qiáng)制類型轉(zhuǎn)換符,它將右邊表達(dá)式的類型轉(zhuǎn)換為括號(hào)中的類型。

強(qiáng)制類型轉(zhuǎn)換并不會(huì)改變右邊表達(dá)式的值,(類型名)表達(dá)式 這個(gè)整體產(chǎn)生了一個(gè)臨時(shí)值。

例:有如下代碼:

float a=3.8;

int b;

b=(int)a;

這段代碼把a(bǔ)強(qiáng)制轉(zhuǎn)化為整型數(shù)據(jù)3(注意C語言里的強(qiáng)制轉(zhuǎn)換都是截取,而不是四舍五入),并把這個(gè)值3賦給整型變量b。注意,此時(shí)a的值仍然是3.8。

強(qiáng)制轉(zhuǎn)換只控制其后的一個(gè)數(shù)據(jù)

例:(int ) a+b和(int ) (a+b)不同:

前者是把a(bǔ)強(qiáng)制轉(zhuǎn)換為整型,再把這個(gè)臨時(shí)的整型值和b作運(yùn)算。

后者是先計(jì)算a+b,之后把它們的值做整體的強(qiáng)制轉(zhuǎn)換。

強(qiáng)制轉(zhuǎn)換需要注意的幾點(diǎn):

1) 類型名外的()必不可少

2) 強(qiáng)制轉(zhuǎn)換控制其后的一個(gè)數(shù)據(jù)

3) 強(qiáng)制類型轉(zhuǎn)換并不會(huì)改變右邊表達(dá)式的值

 

第六節(jié) 賦值表達(dá)式

知識(shí)點(diǎn):賦值表達(dá)式的運(yùn)算;復(fù)合賦值表達(dá)式的運(yùn)算;自加和自減;

重要程度:★★★★★

1、賦值運(yùn)算符和賦值表達(dá)式

        int  a = 12;

它的含義是賦值運(yùn)算符右邊的表達(dá)式的運(yùn)算結(jié)果賦值給左邊的變量。

說明:

1)賦值運(yùn)算符左邊必須是單個(gè)變量。例如x+1=3在數(shù)學(xué)上雖然是正確的,可是在C語言中卻

是錯(cuò)誤的,不能將一個(gè)常量賦值給一個(gè)表達(dá)式。

 

2)賦值運(yùn)算會(huì)將左邊變量的值用右邊表達(dá)式的值來代替,右邊的值不會(huì)改變。

例如,int x=3,y=5;

x=y+1;

以上代碼先將x初始化為3,將y初始化為5。執(zhí)行完賦值語句x=y+1;后,變量x的值被y+1覆蓋掉,即x的值變成了6,變量y的值不會(huì)改變。

用盒子理論來說就是,先定義了兩個(gè)盒子,分別叫做x盒子和y盒子,x盒子裝的是整數(shù)3,y盒子裝的是整數(shù)5。之后把x盒子所裝的內(nèi)容改成y盒子的內(nèi)容加1,也就是6。這樣,x盒子中裝的就是6了,以后再要使用x,都是用的新值6。而以前x裝過什么值現(xiàn)在再也不知道了。 

 

3)賦值表達(dá)式的值是賦值號(hào)左邊變量被賦值后的值

例如:x=0整個(gè)賦值表達(dá)式的值是變量x被賦值之后的值,也就是說這個(gè)表達(dá)式的值為0。

 

4)可以將賦值表達(dá)式的值再賦值給變量,形成連續(xù)賦值運(yùn)算。(學(xué)會(huì)分析過程)

例如,x=(y=25)是一個(gè)連續(xù)賦值表達(dá)式。由于賦值表達(dá)式的結(jié)合形式是從右到左,因此可以簡寫為x=y=25,它表達(dá)的含義是將25賦值給變量y,然后將表達(dá)式y(tǒng)=25的值賦值,即變量y的值賦給變量x,結(jié)果使變量x和y的值都變?yōu)?5。

 

5)雖然可以連續(xù)賦值,但是不能連續(xù)初始化。(考試重點(diǎn)

例如:int x=y=25;  就是錯(cuò)誤的。

對(duì)于int x=y=25;我們會(huì)先計(jì)算y=25,此時(shí),y并沒有定義,而是在直接使用,所以就會(huì)報(bào)錯(cuò)。

如果我們把上面的連續(xù)初始化改成:int y;  int x=y=25;  這樣就沒有錯(cuò)了。

 

6)賦值運(yùn)算符不同于數(shù)學(xué)上的“等號(hào)”。(C語言中“=”表示賦值,“= =”表示等號(hào))

因?yàn)橘x值運(yùn)算符的操作是將賦值號(hào)右邊的表達(dá)式的值賦給左邊的變量。它是單方向的操作。例如在數(shù)學(xué)中,i=i+1不成立,但在賦值表達(dá)式中卻是成立的,它表示將變量i的值增加1之后得到的結(jié)果賦值給變量i,因此,該表達(dá)式的含義是使變量i的值增加1。

 

7)如果賦值號(hào)兩邊的運(yùn)算對(duì)象類型不一致,則系統(tǒng)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。

 

8)自動(dòng)類型轉(zhuǎn)換的實(shí)例:int a=3.6;

賦值號(hào)左邊的變量類型是整數(shù),右邊的值是實(shí)數(shù),因此將右邊的值轉(zhuǎn)換成整數(shù)。3.6轉(zhuǎn)換成整數(shù)后是3,因此a的值被賦為了3。

注意:實(shí)數(shù)轉(zhuǎn)換成整數(shù)的方法是截取而不是四舍五入,因此直接把小數(shù)點(diǎn)后的數(shù)據(jù)去掉就行了。

 

 

2、復(fù)合賦值表達(dá)式(掌握如何計(jì)算即可)

在C語言中,可以將算術(shù)運(yùn)算符與賦值運(yùn)算符組合在一起組成復(fù)合賦值運(yùn)算符。它們是:+=,-=,*=,/=,其使用方法及具體的運(yùn)算規(guī)則如下:

表達(dá)式n+=100等價(jià)的表達(dá)式為:n=n+100

表達(dá)式n-=2*n等價(jià)的表達(dá)式為:n=n-2*n

表達(dá)式n*=m+1等價(jià)的表達(dá)式為:n=n*(m+1)

表達(dá)式n/=m+1等價(jià)的表達(dá)式為:n=n/(m+1)

上述四種復(fù)合賦值運(yùn)算符的運(yùn)算優(yōu)先級(jí)與賦值運(yùn)算符的優(yōu)先級(jí)相同(優(yōu)先級(jí)都非常低),運(yùn)算方向均為自右向左。

想一想:n+=10和n+10有什么區(qū)別?區(qū)別在于前者n本身的值改變了,而后者n的值沒有改變。

 

1: 已知變量n的初始值為8,計(jì)算表達(dá)式n+=n*=n-2的值。(經(jīng)典考題)

分析:表達(dá)式中有兩個(gè)復(fù)合賦值運(yùn)算符:+=和*=。它們優(yōu)先級(jí)相同,運(yùn)算方向均為自右向左。因此,運(yùn)算的步驟如下:

(1)先計(jì)算最右邊表達(dá)式n-2的值為6;

(2)再計(jì)算n*=6,該表達(dá)式等價(jià)n=n*6,將n中的值8乘以6,得到48,并賦值給n,因此變量n的值為48,表達(dá)式n*=n-2的值為48;

(3)最后計(jì)算n+=48,該表達(dá)式相當(dāng)于n=n+48。因?yàn)樯弦徊接?jì)算出n的值為48,所以n+48的值為96,即n的值最終為96。

通過計(jì)算,表達(dá)式n+=n*=n-2的值為96。

 

2int  a=5,b=6,c=2;

      c *=a+b;

請(qǐng)問:c的值最終是多少?

錯(cuò)誤的算法: c=c*a+b;得到的是16。

正確的算法: c=c*(a+b);得到的是22。

 自加表達(dá)式

1、自加與自減運(yùn)算符(超級(jí)重點(diǎn))

如何讓一個(gè)變量自身的值加1?通過之前的學(xué)習(xí),我們知道a=a+1; 和 a+=1; 都可以實(shí)現(xiàn)。而我們將要討論的a++和++a同樣可以實(shí)現(xiàn)這樣的效果。

自加、自減運(yùn)算是一種賦值運(yùn)算。

既然a++和++a寫法上有區(qū)別,那么它們應(yīng)該有所不同。這里僅就++運(yùn)算符進(jìn)行說明,--運(yùn)算符有類似的結(jié)論:

a++++a的相同處:對(duì)于變量a而言,它們都是讓a的值加1。

a++++a的不同處:( ++a)、(a++)是兩個(gè)自加表達(dá)式,所以這兩個(gè)表達(dá)式本身就有數(shù)值,只是++a,a++兩個(gè)的表達(dá)式的數(shù)值不同。

自加表達(dá)式的核心理解

++a是先把a(bǔ)加1,再作為(++a)這個(gè)表達(dá)式的數(shù)值。

a++是先把a(bǔ)的數(shù)值作為(a++)這個(gè)表達(dá)式的數(shù)值,再使a自加1。

 

 

 

 

 

²  遇到a++,就看成a,等這部分執(zhí)行結(jié)束后,再讓a的值加一。(加號(hào)在后,則先使用后自加

 

²  遇到++a,則把a(bǔ)的值先加一,之后再使用加過一后的值。(加號(hào)在前,則先自加后使用)。

例如有以下代碼(通過以下代碼,學(xué)會(huì)分析a++++a的執(zhí)行過程):

int a=3,b;

b=a++;

這段代碼執(zhí)行完后,b的值為3,a的值為4。

對(duì)于語句b=a++; 按照以上所說,我們就看成b=a; 此時(shí)a值為3,因此賦值后b的值也為3。等這部分執(zhí)行結(jié)束后,再讓a的值加一。因此,整個(gè)這段代碼結(jié)束后,b的值為3,a的值為4。

----------------------------------------------------------------------------------------------------------------------------------

int a=3, b;

b=++a,代碼發(fā)生了變化,那么執(zhí)行完后,a和b的值分別為多少呢?

對(duì)于語句b= ++a; 按照以上所說,我們把a(bǔ)值先加一,得到a的值為4。之后賦值給b。因此,整個(gè)這段代碼結(jié)束后,a、b的值都為4。

 

 

通過以上的簡單例子,我們看到,a++和++a都會(huì)讓a本身的值加一。

不同在于對(duì)別人的影響。

語句b=a++; 等價(jià)于以下兩條語句:b=a;a++;(先使用(賦值),后自加

語句b=++a; 等價(jià)于以下兩條語句:a++;b=a;(先自加,后使用(賦值)

 

 

 

 

 

 

 

說明:

 

補(bǔ)充考點(diǎn):

1)增量運(yùn)算符的運(yùn)算對(duì)象只能為單個(gè)變量,不能是常量或是表達(dá)式。例如:++3、++(i+1)

都是不合法的增量表達(dá)式。

 

2)不論“++”在變量的前面還是在變量的后面,對(duì)于變量本身都具有“增加1”的相同效果。

例如i++、++i兩個(gè)增量表達(dá)式運(yùn)算后變量i的值都是增加1。

 

3)自加、自減運(yùn)算符的結(jié)合方向是“從右到左”。

例如有如下代碼:

int y,x=3;

y=-x++;

負(fù)號(hào)“-”與自加運(yùn)算符“++”具有相同的運(yùn)算優(yōu)先級(jí),但是根據(jù)“從右到左”的結(jié)合方向,那么應(yīng)該先計(jì)算x++,而x++可以先看成就是x。取其負(fù)值3賦給y,那么y的值就為-3,這部分執(zhí)行結(jié)束了,x的值再加一,所以這段代碼結(jié)束后,x的值為4,y的值為-3。

 

4)在使用“++”運(yùn)算符時(shí),變量應(yīng)該有個(gè)確定的值。例如:int a; a++; 就是錯(cuò)誤的。因?yàn)閯偠?/p>

義好的a值不確定。讓一個(gè)垃圾值自加一沒有任何意義。

 

經(jīng)典考題:

1: 有以下定義語句:double a,b; int w; long c;

若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是

A)a=a+b=b++         B)w%((int)a+b)     C)(c+w)%(int)a         D)w=a%b;

分析:答案C正確。

選項(xiàng)A是一個(gè)連續(xù)賦值表達(dá)式,先將表達(dá)式b++的值賦值給表達(dá)式a+b,因?yàn)橘x值語句的左邊只能是變量名稱,因此這時(shí)會(huì)出錯(cuò)。

選項(xiàng)B是一個(gè)求余運(yùn)算符連接起來的兩個(gè)運(yùn)算對(duì)象,除數(shù)((int)a+b)看起來比較復(fù)雜,它先將雙精度類型變量a的值強(qiáng)制轉(zhuǎn)換為整型,然后再與雙精度類型變量b求和,得到的值的類型仍為雙精度類型,也就是說除數(shù)是一個(gè)實(shí)數(shù)而不是整數(shù),因此不能使用%運(yùn)算符,所以答案B錯(cuò)誤。

選項(xiàng)C的被除數(shù)是兩個(gè)整型數(shù)相加,運(yùn)算結(jié)果為整型,除數(shù)為(int)a,也為整型,答案C正確。

選項(xiàng)D中a%b錯(cuò)誤。

 

2 有以下程序

main()

{     int m=12,n=34;

       printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

程序運(yùn)行后的輸出結(jié)果是

A)12353514   B)12353513   C)12343514   D)12343513

分析:在第一個(gè)printf輸出語句中,計(jì)算表達(dá)式m++時(shí),其值為變量m的初始值,即12,因?yàn)閳?zhí)行了表達(dá)式m++,變量m的值增加1,因此m的值變?yōu)?3。計(jì)算表達(dá)式++n 時(shí),其值為變量n的初始值增加1,即35,因?yàn)橛?jì)算了表達(dá)式++n,因此變量n的值增加1,為35。在第二個(gè)printf中,計(jì)算n++時(shí),其值為n的初始值,即上一次計(jì)算得到的35,因?yàn)橛?jì)算了n++,變量n的值增加1。計(jì)算++m時(shí),其值為變量m的初始值增加1,即使上一次計(jì)算得到的m的值加上1,為14。因此本題答案為A。

 逗號(hào)表達(dá)式

5、逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式

1、在C語言中,逗號(hào)除了做分隔符,還可以作一種運(yùn)算符——逗號(hào)運(yùn)算符。用逗號(hào)運(yùn)算符把兩個(gè)或兩個(gè)以上的表達(dá)式連接起來,可以構(gòu)成一個(gè)新的表達(dá)式,即逗號(hào)表達(dá)式。例如:

x=5,y=6,z=7    整個(gè)(x=5,y=6,z=7)是逗號(hào)表達(dá)式,他的數(shù)值等于7,

 

2、逗號(hào)運(yùn)算符是級(jí)別最低的運(yùn)算符號(hào),比賦值還要低。

 

3、逗號(hào)運(yùn)算符具有從左到右的結(jié)合性,即先計(jì)算第一個(gè)表達(dá)式,然后計(jì)算第二個(gè)表達(dá)式,直到最后一個(gè)表達(dá)式。最后一個(gè)表達(dá)式的值就是整個(gè)逗號(hào)表達(dá)式的值。上述的逗號(hào)表達(dá)式的值就是表達(dá)式z=7的值7。

x=5,y=6,z=7   是個(gè)逗號(hào)表達(dá)式,它的數(shù)值為7。x的數(shù)值為5。

x=(5,y=6,z=7) 是個(gè)逗號(hào)表達(dá)式,它的數(shù)值為7,x的數(shù)值為7。

 

.

1: 有以下程序

main( )

{     int a1=3,a2=9;

printf("%d\n",(a1,a2)); 

}

以下敘述中正確的是

A)程序輸出3                             B)程序輸出9

C)格式說明符不足,編譯出錯(cuò)                       D)程序運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息

分析:函數(shù)體中首先變量初始化,變量a1、a2的值分別為3和9,接下來的printf輸出語句中,要輸出的項(xiàng)是(a1,a2),在此要明白輸出項(xiàng)是一個(gè)逗號(hào)表達(dá)式就不會(huì)選錯(cuò)答案。逗號(hào)表達(dá)式a1,a2的值就是a2的值,因此本題的答案為B。

請(qǐng)注意它與printf("%d\n",a1,a2)的區(qū)別。

 

2: 有以下程序(經(jīng)典考題

main( )

{    int x,y,z;

x=y=1;

z=x++,y++,++y;

printf(“%d,%d,%d\n”,x,y,z);

}

程序運(yùn)行后的輸出結(jié)果是

A)2,3,3      B)2,3,2     C)2,3,1     D)2,2,1

分析:函數(shù)體中首先定義了三個(gè)整型變量x,y和z,接下來,對(duì)變量x和y賦值為1。然后,仔細(xì)分析語句z=x++,y++,++y;,因?yàn)槎禾?hào)運(yùn)算符在所有運(yùn)算符中的優(yōu)先級(jí)最低,因此賦值表達(dá)式應(yīng)該先于逗號(hào)表達(dá)式計(jì)算,所以上述逗號(hào)表達(dá)式語句由三個(gè)賦值表達(dá)式組成:z=x++、y++和++y。按逗號(hào)表達(dá)式的計(jì)算規(guī)則,從左至右依次計(jì)算每個(gè)表達(dá)式,故應(yīng)先計(jì)算x++,并將其值賦給變量z,z的值為1,因?yàn)橛?jì)算了x++,x的值增加1,變?yōu)?;計(jì)算了y++和++y,變量y的值應(yīng)增加2,變?yōu)?。最后,程序

輸出x,y,z的值應(yīng)為2,3,1。本題答案為C。

 

補(bǔ)充:

   int  a=1,x;

   x= (a++,a++,++a)后,x的數(shù)值為多少?                                    x為3.

 

int  a=1,x;

   x= a++,a++,++a后,x的數(shù)值為多少?                                        x為1

 

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

宁波市| 新源县| 皋兰县| 堆龙德庆县| 乐山市| 台安县| 文山县| 贡山| 阜城县| 西乌珠穆沁旗| 改则县| 武功县| 都兰县| 荔波县| 长沙市| 新巴尔虎右旗| 舞阳县| 通榆县| 文成县| 家居| 曲靖市| 诏安县| 阳高县| 宁乡县| 土默特左旗| 广河县| 大冶市| 英吉沙县| 南召县| 中江县| 曲阳县| 莆田市| 钟山县| 梅河口市| 黄山市| 德阳市| 贡嘎县| 岐山县| 内江市| 东平县| 武义县|