- 全國計算機等級考試教程:二級C語言程序設(shè)計
- 全國計算機等級考試教材編寫組
- 2170字
- 2019-11-22 18:55:13
2.8 賦值運算符和賦值表達式
賦值運算符和賦值表達式是 C語言的一種基本的運算符和表達式。賦值表達式的作用就是設(shè)置變量的值,實際上是將特定的值寫到變量所對應(yīng)的內(nèi)存單元中去。
2.8.1 賦值運算符和賦值表達式
C語言中的賦值運算符是“=”,它的功能是把其右側(cè)表達式的值賦給左側(cè)的變量。由“=”連接的式子稱為賦值表達式。其一般形式為:
變量=表達式
例如
intx,y; /*首先定義整型變量x和y*/
x=2; /*把常量2賦給變量x*/
y=x+2; /*計算x+2的值,并賦給變量y,變量x本身的值不變*/
說明
(1)賦值運算符具有右結(jié)合性
【例如】
a=b=c=5;
/*對3個變量a,b,c進行賦值*/
由于賦值運算符的右結(jié)合性,此賦值表達式等價于:
a=(b=(c=5));
(2)凡是表達式可以出現(xiàn)的地方均可出現(xiàn)賦值表達式
【例如】
x=(y=1)+(z=2);
讓我們一起來分析一下這個表達式。
①把1賦給變量y,不要忘記圓括號的優(yōu)先級是最高的;
②把2賦給變量z;
③求y+z的值,即1+2的值等于3;
④將③求得的值賦給x,所以x的值應(yīng)該是3。
(3)賦值運算符“=”左邊必須是變量名
【例如】
inta,b;
(a+b)=1;
(a-3)=5;
這類表達式就是不合法的,也就是說,不能對表達式賦值(除了表示指針的表達式)。
如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進行類型轉(zhuǎn)換,轉(zhuǎn)換的規(guī)則是:把賦值運算符右邊表達式的類型轉(zhuǎn)換為左邊變量的類型。具體規(guī)定如下所述。
(1)浮點型賦予整型
賦值原則是舍棄浮點數(shù)的小數(shù)部分,只保留整數(shù)部分。
(2)整型賦予實型
賦值原則是數(shù)值不變,但將以浮點形式表示,即增加小數(shù)部分,小數(shù)部分用0表示。
(3)字符型賦予整型
賦值原則是將字符所對應(yīng)的ASCII碼值賦予整型數(shù)據(jù)。
(4)整型賦予字符型
賦值原則是把整型數(shù)據(jù)賦予字符型數(shù)據(jù),賦值后的字符型數(shù)據(jù)的值就是該整數(shù)ASCII碼值所對應(yīng)的字符。
(5)單、雙精度浮點型之間的賦值
C語言中的浮點值總是用雙精度表示的,如果將float類型的變量賦予double類型的變量,只是在float型數(shù)據(jù)尾部加0延長為double型數(shù)據(jù)參加運算,然后直接賦值。如果將double型數(shù)據(jù)轉(zhuǎn)換為float型時,通過截尾數(shù)來實現(xiàn),截斷前要進行四舍五入操作。
2.8.2 復(fù)合的賦值表達式
所謂復(fù)合的賦值表達式就是在賦值運算符之前加上其他的運算符而構(gòu)成的表達式。復(fù)合賦值表達式的一般形式是:
變量operater=表達式
它等價于:
變量=變量operater(表達式 )
說明
●operater代表賦值或其他運算符。
●operater與“=”構(gòu)成復(fù)合的賦值運算符。與算術(shù)運算符有關(guān)的常用的復(fù)合運算符有“+=”“-=”“*=”“/=”和“%=”。
例如
a+=2
該表達式等價于“a=a+2”,其含義是把a的值加上2,然后再賦給a。與“+=”類似,“a-=2”等價于“a=a-2”,其含義是把a的值減去 2,然后再賦給 a。依次類推,“a*=2”等價于“a=a*2”,其含義是把 a的值乘以2,然后再賦給a;“a/=2”等價于“a=a/2”,其含義是把a的值除以2,然后再賦給a;“a%=2”等價于“a=a%2”,其含義是把a的值模2,然后再賦給a。
復(fù)合的賦值運算符的優(yōu)先級與賦值運算符的優(yōu)先級是相同的,它們的優(yōu)先級要比算術(shù)運算符的優(yōu)先級低,并且復(fù)合的賦值運算符與賦值運算符具有相同的結(jié)合性,即自右向左。
【例2-7】分析下列程序的結(jié)果。
程序代碼
#include<stdio.h>
void main( )
{ int a=1;
a+=a-=a+a;
printf("%d\n",a);
}
程序的運行結(jié)果是:
-2
分析一下程序的執(zhí)行過程。
① 因為復(fù)合賦值運算符的結(jié)合性是自右向左的,所以先計算a+a的值,即為2。
②計算a-=①的值,即a=a-2,為-1。需要特別注意的是,經(jīng)過①的運算a的值并沒有改變,仍是初值1。這時a的值就變成了-1。
③計算a+=②的值,即a=a+(-1),注意在②的運算中a的值是-1。所以,此時a的值是(-2)。
所以最終屏幕上顯示的a的值是-2。
真題演練
【例1】設(shè)a,b,c是整型變量且均已賦值,則以下選項中錯誤的賦值語句是( )。
A)a=(b=3)=1;
B)a=(b=2)+c;
C)a=b=c+10;
D)a=1+(b=c=2);
【解析】賦值運算結(jié)合性為由右向左結(jié)合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。選項A中,賦值運算(b=3)=1,左值為表達式,不是變量不能被賦值,所以選項A錯誤。選項B運算過程為:先賦值b=2,再計算b+c,將結(jié)果賦給a,是正確的賦值語句。選項C運算過程為:先計算c+10,再將結(jié)果賦給b,然后將b賦給a,是正確的賦值語句。選項D運算過程為:先將2賦給c,再將c賦給b,然后計算1+b,最后將結(jié)果賦給a,也是正確的賦值語句。
【答案】A
【例2】設(shè)有定義:inta=0,b=1,c=1;,以下選項中,表達式值與其他3個不同的是( )。
A)b=a==c
B)a=b=c
C)a=c==b
D)c=a!=c
【解析】賦值運算結(jié)合性為由右向左結(jié)合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。成功實現(xiàn)賦值后以左值為返回值。邏輯表達式成立則返回1,不成立則返回0。選項A中,邏輯表達式a==c不成立(0),則b=0,表達式值為0。選項B中,將c賦值給b,b=1,再將b賦給a,a=1,表達式值為1。選項C中,邏輯表達式c==b成立(1),則a=1,表達式值為1。選項D中,邏輯表達式a!=c成立(1),則c=1,表達式值為1。選項A與其他選項不同,所以選擇選項A。
【答案】A
【例3】若想給已定義為 int型的變量 a,b,c,d賦值為1,以下選項中錯誤的語句是( )。
A)d=1,c=d,b=c,a=b;
B)a=b=c=d=1;
C)a=1,b=a,c=b,d=c;
D)a=b,b=c,c=d,d=1;
【解析】賦值是將一個常量的值賦給一個變量。在選項D中,變量b的值相當(dāng)于一個未知的數(shù),用b對a賦值,不滿足題干要求的變量a、b、c、d賦值為1的條件,因此選擇選項D。
【答案】D
- 全國計算機等級考試真題匯編與專用題庫:二級C語言
- 2013全國計算機等級考試新版無紙化上機考試臨考沖刺模擬實戰(zhàn):二級Access數(shù)據(jù)庫
- 2020年3月全國計算機等級考試《四級軟件工程》復(fù)習(xí)全書【核心講義+歷年真題詳解】
- 2020年3月全國計算機等級考試《四級數(shù)據(jù)庫原理》復(fù)習(xí)全書【核心講義+歷年真題詳解】
- 汪博士解讀PMP考試
- 2020年3月全國計算機等級考試《三級網(wǎng)絡(luò)技術(shù)》【教材精講+真題解析】講義與視頻課程【28小時高清視頻】
- 5天通過職稱計算機考試(考點視頻串講+全真模擬):Excel 2003中文電子表格(第2版) (全國專業(yè)技術(shù)人員計算機應(yīng)用能力考試指導(dǎo)叢書)
- 2014年全國計算機等級考試3年真題精解與過關(guān)全真訓(xùn)練題:二級Java語言程序設(shè)計
- 2020年3月全國計算機等級考試《二級Visual Basic語言程序設(shè)計》歷年真題與模擬試題詳解
- 全國會計從業(yè)資格考試應(yīng)試指南·真題·預(yù)測三合一:財經(jīng)法規(guī)與會計職業(yè)道德
- PMP項目管理認證學(xué)習(xí)指南(第4版)
- 2020年3月全國計算機等級考試《三級網(wǎng)絡(luò)技術(shù)》復(fù)習(xí)全書【核心講義+歷年真題詳解】
- 全國職稱計算機考試講義 真題 預(yù)測三合一:Word 2003中文字處理
- 全國職稱計算機考試標(biāo)準(zhǔn)教材與專用題庫:Internet應(yīng)用
- 2020年3月全國計算機等級考試《三級信息安全技術(shù)》復(fù)習(xí)全書【核心講義+歷年真題詳解】