C語言程序設(shè)計(jì)(第三版)高禹 第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第1頁
C語言程序設(shè)計(jì)(第三版)高禹 第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第2頁
C語言程序設(shè)計(jì)(第三版)高禹 第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第3頁
C語言程序設(shè)計(jì)(第三版)高禹 第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第4頁
C語言程序設(shè)計(jì)(第三版)高禹 第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 1頁 第 2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 本章概述 本章的學(xué)習(xí)目標(biāo) 主要內(nèi)容 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 2頁 本章概述 本章主要介紹 變量 、 基本數(shù)據(jù)類型 ( 整型 、 實(shí)型 、 字符型 ) 、 運(yùn)算符 ( 算術(shù)運(yùn)算符 、 賦值運(yùn)算符 、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 、 自增自減運(yùn)算符 、逗號(hào)運(yùn)算符 、 求字節(jié)運(yùn)算符 ) 、 表達(dá)式( 算術(shù)表達(dá)式 、 賦值表達(dá)式 、 逗號(hào)表達(dá)式 )等內(nèi)容 。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 3頁 本章的學(xué)習(xí)目標(biāo) 本章教學(xué)目的: 掌握整型、實(shí)型和字符型常量、變量的基本使用方法,掌握變量賦初值方法、混合運(yùn)算規(guī)則、算術(shù)運(yùn)算符和表達(dá)式的用法,理解賦值表達(dá)式和逗號(hào)表達(dá)式。 本章教學(xué)重點(diǎn): 整型、實(shí)型和字符型常量、變量的基本使用方法,算術(shù)運(yùn)算符和表達(dá)式的用法 本章教學(xué)難點(diǎn): 混合運(yùn)算規(guī)則、賦值表達(dá)式和逗號(hào)表達(dá)式 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 4頁 主要內(nèi)容 常量和變量 整型數(shù)據(jù) 實(shí)型數(shù)據(jù) 字符型數(shù)據(jù) 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 賦值運(yùn)算符和賦值表達(dá)式 其它運(yùn)算符和表達(dá)式 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 5頁 語言的數(shù)據(jù)類型 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 6頁 常量和變量 常量 在程序運(yùn)行過程中,其值不能被改變的量稱為常量。 常量分為: ( 1)整型常量(如 369、 0、 ( 2)實(shí)型常量(如 ( 3)字符常量(如 A、 a、 #、 3); ( 4)符號(hào)常量 用一個(gè)標(biāo)識(shí)符代表一個(gè)常量。例如若在程序開始有這樣的預(yù)處理命令:“ # N 10”,那么 用 10代替。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 7頁 變量 在程序運(yùn)行過程中,其值可以被改變的量稱為變量。 在使用一個(gè)變量前,必須先定義該變量,就是為該變量起個(gè)名字并聲明它的數(shù)據(jù)類型。根據(jù)定義,編譯系統(tǒng)在內(nèi)存中為該變量分配存儲(chǔ)單元,在該存儲(chǔ)單元中存放該變量的值。 用來標(biāo)識(shí)變量名(或符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名)的有效字符序列稱為標(biāo)識(shí)符。 識(shí)符只能由英文字母、數(shù)字、下劃線三種字符組成,并且第一個(gè)字符必須是字母或下劃線。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 8頁 注意,大寫英文字母和小寫英文字母是不同的字符,例如 變量起名字時(shí)一般用小寫英文字母。 變量定義的一般格式: 存儲(chǔ)類型 數(shù)據(jù)類型 變量名 1, 變量名 2; 例如: a, b, 稱在定義變量的同時(shí)對(duì)變量進(jìn)行賦初值的操作為變量初始化。 變量初始化的一般格式: 存儲(chǔ)類型 數(shù)據(jù)類型 變量名 1=初值 1, 變量名 2=初值 2; 例如: 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 9頁 整型數(shù)據(jù) 整型常量即整常數(shù),在語言中,整型常量可用三種形式表示: ( 1)十進(jìn)制,例如 456、 0、 ( 2)八進(jìn)制(以數(shù)字開頭),例如 0123,即 (123)8,等于十進(jìn)制的 83。 ( 3)十六進(jìn)制(以數(shù)字 +小寫字母 ,例如 0即 (23)16, 等于十進(jìn)制的 35。 整型常量 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 10頁 整型變量 根據(jù)變量的取值范圍,整型變量可分為:基本整型(類型關(guān)鍵字為 短整型(類型關(guān)鍵字為 、長整型(類型關(guān)鍵字為 。 對(duì)以上三種都可以加上修飾符 定是“無符號(hào)數(shù)”。不加修飾符 含是有符號(hào)( 即有符號(hào)的, 歸納起來,整型變量有以下 6種: 有符號(hào)基本整型 無符號(hào)基本整型 有符號(hào)短整型 無符號(hào)短整型 有符號(hào)長整型 無符號(hào)長整型 (方括弧內(nèi)的部分可以省略,如 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 11頁 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。若不指定是無符號(hào)型 存儲(chǔ)單元的最高位是符號(hào)位( 0為正, 1為負(fù))。 若指定是無符號(hào)型 存儲(chǔ)單元的全部二進(jìn)制位( 用來存放數(shù)本身,而不包括符號(hào)。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 整型數(shù)以二進(jìn)制補(bǔ)碼形式存放于內(nèi)存中。 對(duì)于二進(jìn)制正數(shù),它的原碼、反碼和補(bǔ)碼都相同。 例如,若定義“ a=9; ”,則 碼和補(bǔ)碼都是 0000000000001001。 對(duì)于二進(jìn)制負(fù)數(shù),它的原碼是這樣的:符號(hào)位是“ 1”,數(shù)值部分用二進(jìn)制的絕對(duì)值表示;它的反碼是這樣的:將其原碼除符號(hào)位外,其余各位按位取反,即“ 1”都換成“ 0”,“ 0” 都換成“ 1”;它的補(bǔ)碼是這樣的:將其反碼在最低位加“ 1”。 例如,若定義“ b= ”,則 碼和補(bǔ)碼分別是: 1000000000001001、 1111111111110110、1111111111110111。 第 12頁 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 13頁 要求樣實(shí)現(xiàn)由計(jì)算機(jī)系統(tǒng)自行決定。 例如,在微機(jī)上,使用 軟件時(shí), 個(gè)字節(jié)。 使用 +和 個(gè)字節(jié), 個(gè)字節(jié)。 對(duì)于有符號(hào)整形變量, 2個(gè)字節(jié)的取值范圍在 215 至 (2151)之間,即在 32768至 32767之間; 4個(gè)字節(jié)的取值范圍在 231至(2311) 之間,即在 2147483648至 2147483647之間。 對(duì)于無符號(hào)整形變量, 2個(gè)字節(jié)的取值范圍在 0至 (2161) 之間,即在 0至 65535之間; 4個(gè)字節(jié)的取值范圍在 0至 (2321) 之間,即在 0至 4294967295之間。 為整形變量賦值時(shí),若超出了規(guī)定的取值范圍,就會(huì)發(fā)生“溢出”現(xiàn)象,而程序運(yùn)行時(shí)并不報(bào)錯(cuò)。因此要根據(jù)實(shí)際情況,準(zhǔn)確選擇變量的類型,避免超出取值范圍。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 14頁 整型數(shù)據(jù)的輸入輸出 可以使用 指定格式”需要使用格式說明符 %和格式字符,顯示整型數(shù)的格式字符有英文字母 d、 o、x、 具體含義如下: %d表示把數(shù)據(jù)按十進(jìn)制整型輸入(輸出); %o表示把數(shù)據(jù)按八進(jìn)制整型輸入(輸出); %x表示把數(shù)據(jù)按十六進(jìn)制整型輸入(輸出); %u表示把數(shù)據(jù)按無符號(hào)整型輸入(輸出)。 除了 %面的其余幾種格式都將數(shù)據(jù)作為無符號(hào)數(shù)輸入(輸出)。 如果輸入(輸出)的是長整型數(shù),一定要在轉(zhuǎn)換字符的前面加字符 l(字符 否則顯示可能不對(duì)。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 15頁 例 整型數(shù)據(jù)的輸出。 # a=200,b=100,c; c=a+b+15; %d,%d,%d,%dn, a,b,c, %o,%o,%o,%on, a,b,c, %x,%x,%x,%xn, a,b,c, ; 運(yùn)行結(jié)果如下: 200, 100, 315, 30 310, 144, 473, 36 64, 13b, 1e 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 16頁 # a,b,c; d; e; %d,%o,%x,%u,%, &a,&b,&c,&d,&e); %d,%d,%d,%u,%n, a,b,c,d,e); ; 若輸入為: 10, 10, 10, 65533, 654321 (回車符) 顯示結(jié)果為: 10, 8, 16, 65533, 654321 例 整型數(shù)據(jù)的輸入。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 17頁 實(shí)型數(shù)據(jù) 實(shí)型常量 實(shí)數(shù)又稱浮點(diǎn)數(shù),有兩種表示形式: (1) 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成 (必須有小數(shù)點(diǎn) ), (2) 指數(shù)形式: E(或 e),如, 05(分別代表 03、 05)等。注意: E(或 e)的兩邊必須有數(shù)字,且后面的指數(shù)必須是整數(shù)。 一個(gè)實(shí)數(shù)有多種指數(shù)形式。 例如, 01、 02、 03等。 把其中的 02稱為“規(guī)范化的指數(shù)形式”,即小數(shù)點(diǎn)左邊有且只有一位非零數(shù) 字。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 18頁 實(shí)型變量分為單精度型和雙精度型,有的 ( 1)單精度型。類型說明符為 內(nèi)存中占個(gè)字節(jié)( 32位),有效數(shù)字的個(gè)數(shù)是位十進(jìn)制數(shù)字,數(shù)值范圍 10 1038 。 ( 2)雙精度型。類型說明符為 內(nèi)存中占個(gè)字節(jié)( 64位),有效數(shù)字的個(gè)數(shù)是 15位十進(jìn)制數(shù)字,10 10308 。 實(shí)型變量 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 19頁 實(shí)型數(shù)據(jù)的輸入輸出 可以使用 %出) 可以使用 %出) 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 20頁 例 實(shí)型數(shù)據(jù)的輸入輸出。 # a,b; x,y; %f,%e,% &a,&b,&x,&y); %f,%e,%n, a,b,x,y); ; 若輸入為: (回車符) 顯示結(jié)果為: 02, 40 若輸入為: 顯示結(jié)果為: 02, 05 從顯示可見: 對(duì)于十進(jìn)制小數(shù)形式,單精度型和雙精度型的有效數(shù)字分別是 7位和 15位。對(duì)于十進(jìn)制指數(shù)形式,都是 6位有效數(shù)字。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 21頁 如, A、 3、 a、 ?等都是字符型常量。注意 A和 a是不同的。 還有一種特殊形式的字符型常量,就是以轉(zhuǎn)義符“ ”開頭的一些字符構(gòu)成的轉(zhuǎn)義序列。例如 n表示“回車換行”。常見的轉(zhuǎn)義字符如表 表中 到 3位 8進(jìn)制數(shù)所代表的字符,例如 101代表字符 A, 77代表字符?, 43代表字符 #。 表中 到 2位 16進(jìn)制數(shù)所代表的字符,例如 表字符 a, 表字符 #。 表中 到下一個(gè)制表位置,一個(gè)制表區(qū)占 8列,執(zhí)行 t就是將當(dāng)前位置跳到下一個(gè)制表區(qū)的開頭。 字符型數(shù)據(jù) 字符型常量 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 22頁 表 常見轉(zhuǎn)義字符及其含義 字符 形式 含義 a b f n r t ” 0 警告聲 退格,將當(dāng)前位置移到前一列 換頁,將當(dāng)前位置移到下一頁開頭 換行,將當(dāng)前位置移到下一行開頭 回車,將當(dāng)前位置移到本行開頭 橫向跳格,跳到下一個(gè) 反斜線字符 單撇號(hào)字符 雙撇號(hào)字符 1到 3位 8進(jìn)制數(shù)所代表的字符 1到 2位 16進(jìn)制數(shù)所代表的字符 字符串終止字符 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 23頁 例 轉(zhuǎn)義字符的使用 # A102DEtbb3n); A53101tb43141142bn); ; 顯示結(jié)果為: E# A+“A”#第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 24頁 字符串常量 字符串常量是用一對(duì)雙引號(hào)括起來的若干字符序列。例如:“ “ 0作為字符串結(jié)束標(biāo)志,字符 0的 ,它不引起任何控制動(dòng)作,也不是一個(gè)可顯示的字符。 因此,字符串“ 內(nèi)存中要占 5個(gè)字節(jié)數(shù),而不是 4個(gè)。 注意: A和“ A”是不同的, A是字符常量,在內(nèi)存占 1個(gè)字節(jié)數(shù);“ A”字符串常量,在內(nèi)存占 2個(gè)字節(jié)數(shù),包含 A和 0兩個(gè)字符。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 25頁 字符型變量 字符變量的類型說明符為 如:“ 表示定義了兩個(gè)字符變量。 字符變量用來存儲(chǔ)字符常量,一個(gè)字符變量只能存儲(chǔ) 1個(gè)字符,即只能存儲(chǔ) 1個(gè)字節(jié)的信息,就是說一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。例如用如下語句給上面定義的字符變量 A; B; 將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)質(zhì)上是將該字符常量對(duì)應(yīng)的 統(tǒng)為字符變量所分配的一個(gè)字節(jié)的存儲(chǔ)單元中,存放的是該字符常量的二進(jìn)制形式的 如 A的 5,65的二進(jìn)制形式是 01000001,所以系統(tǒng)為 放的是 01000001。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 26頁 字符數(shù)據(jù)的輸入輸出 可以使用 %出) 例 字符變量值的輸入輸出。 # c1,c2,P; %c, & D; %c%c%c ,c1,c2, , %c, %c, %c n ,c1,c2, ; 若輸入為: G 輸出結(jié)果為: G, D, P 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 27頁 例 將大寫英文字符轉(zhuǎn)換為小寫英文字符。 # c1, 請(qǐng)輸入 2個(gè)兩個(gè)大寫英文字符: ); %c, %c,& %c%c , c1=2; c2=2; %c, %cn , ; 若輸入為: A, B 輸出結(jié)果為: a, b 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 28頁 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 算術(shù)運(yùn)算符 基本的算術(shù)運(yùn)算符有如下五種: +(加法運(yùn)算符、或正值運(yùn)算符,如 13+25、 +9); -(減法運(yùn)算符、或負(fù)值運(yùn)算符,如 32 *(乘法運(yùn)算符,如 4*7、 /(除法運(yùn)算符,如 32/5、 %( 求余數(shù)運(yùn)算符,或稱取模運(yùn)算符,如 8%5的值為 3)。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 29頁 關(guān)于除法運(yùn)算符 /: 若是兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2的結(jié)果不是 是 2; 12/24的結(jié)果是 0。若除數(shù)和被除數(shù)中有一個(gè)是浮點(diǎn)數(shù)(實(shí)數(shù)),則與數(shù)學(xué)的運(yùn)算規(guī)則相同,例如 6/、 關(guān)于求余數(shù)運(yùn)算符: 要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),結(jié)果的符號(hào)與 %左邊的符號(hào)相同。例如 16%4的結(jié)果是 0, 的結(jié)果是 8%, 4的結(jié)果是 以利用 %運(yùn)算來判斷一個(gè)數(shù)能否被另一個(gè)數(shù)整除。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 30頁 算術(shù)表達(dá)式 ( 1)算術(shù)表達(dá)式的概念 用算術(shù)運(yùn)算符和圓括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來的、符合語言語法規(guī)則的式子,稱為 單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。 例如數(shù)學(xué)表達(dá)式( 2x+3y) ( 4寫成語言的算術(shù)表達(dá)式,應(yīng)該是: ( 2*x+3*y) /( 4*x*y),或( 2*x+3*y) /4/x/y,不能是( 2x+3y) /( 4 也不能是 2*x+3*y/( 4*x*y), 也不能是( 2*x+3*y) /4*x*y。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 31頁 算術(shù)表達(dá)式的結(jié)果不應(yīng)超過其能表示的數(shù)的范圍。例如在 +, 個(gè)字節(jié)的空間,取值范圍是 2767,下面程序中的算術(shù)表達(dá)式x+2767,賦給 x, y, z; x=31500; y=24600; z=x+y; %d”, z) ; 若想使該程序正常運(yùn)行,可將 x、 y和 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 32頁 ( 2)算術(shù)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 表達(dá)式求值時(shí),按運(yùn)算符的優(yōu)先級(jí)別高低,按次序執(zhí)行。算術(shù)運(yùn)算符的優(yōu)先級(jí)是:先乘除,后加減;求余數(shù)運(yùn)算的優(yōu)先級(jí)與乘除相同;函數(shù)和圓括號(hào)的優(yōu)先級(jí)最高。 所謂結(jié)合性是指:當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合?自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。 算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,例如:在執(zhí)行“ ab+c”時(shí),變量 行“ ab”;然后再執(zhí)行加 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 33頁 不同數(shù)據(jù)類型間的混合運(yùn)算 在語言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算。 如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運(yùn)算。 有兩種轉(zhuǎn)換方式: 自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換 。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 34頁 1自動(dòng)轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換就是系統(tǒng)根據(jù)規(guī)則自動(dòng)地將兩個(gè)不同數(shù)據(jù)類型的運(yùn)算對(duì)象轉(zhuǎn)換成同一數(shù)據(jù)類型。自動(dòng)轉(zhuǎn)換又稱為隱式轉(zhuǎn)換。自動(dòng)轉(zhuǎn)換的規(guī)則如圖 圖 向向右的箭頭表示的是必須的轉(zhuǎn)換。 必須轉(zhuǎn)換成 使是兩個(gè) 要先轉(zhuǎn)換成 后再相加)。 圖 向箭頭表示的是當(dāng)運(yùn)算對(duì)象為不同類型時(shí)轉(zhuǎn)換的方向。例如,若 先將 后進(jìn)行運(yùn)算,結(jié)果為 向箭頭的方向只是表示數(shù)據(jù)類型的高低,由低向高轉(zhuǎn)換,不要理解為 后再轉(zhuǎn)換成 后再轉(zhuǎn)換成 圖 語言程序設(shè)計(jì) 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 35頁 注意: 自動(dòng)轉(zhuǎn)換只是針對(duì)一個(gè)運(yùn)算符兩側(cè)的兩個(gè)運(yùn)算對(duì)象,不能對(duì)表達(dá)式中的所有運(yùn)算符涉及到的運(yùn)算對(duì)象做一次性的自動(dòng)轉(zhuǎn)換。 例如,表達(dá)式 + 前者的值是 者的值是 因?yàn)?是先將 5轉(zhuǎn)換成實(shí)型后進(jìn)行運(yùn)算,與 是 而 6/5是按 是 1,再與 是 不要理解成將 6/5+ 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 36頁 2強(qiáng)制轉(zhuǎn)換 編寫程序時(shí),可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式的值轉(zhuǎn)換成所需類型, 強(qiáng)制轉(zhuǎn)換的格式為: (類型名)(表達(dá)式) 例如: ( a 將 意不能寫成 a)。 ( 將 ( (7%6) 將 7%6的值轉(zhuǎn)換成 ( (x+y) 將 x+意不能寫成( x+y。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 37頁 賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算符 1普通賦值運(yùn)算符 普通賦值運(yùn)算符就是“ =”,它的作用是將運(yùn)算符右側(cè)表達(dá)式的值賦給運(yùn)算符左側(cè)的變量。 例如“ x=作用是將常量 x,“ y=3*x+作用是將表達(dá)式 3*x+y。 例如“ x= x+1”的作用是:將變量 后再賦給變量 x,若變量 ,則執(zhí)行“ x= x+1”后,變量 。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 38頁 2復(fù)合賦值運(yùn)算符 復(fù)合賦值運(yùn)算符是在普通賦值運(yùn)算符“ =”的前面加上其它運(yùn)算符,復(fù)合算術(shù)賦值運(yùn)算符有如下 5個(gè): +=、 -=、 *=、 /=、 %= 另外還有 5種復(fù)合賦值運(yùn)算符( =、 &=、 =、|=),將在后面其它章中介紹。 復(fù)合算術(shù)賦值運(yùn)算符的使用規(guī)則為: 等價(jià)于 X= 其中 或 或 /或%, 如: a+=9 等價(jià)于 a=a+9 b*=c+5 等價(jià)于 b=b*(c+5) (注意不等價(jià)于 b=b*c+5) d/=2*等價(jià)于 d=d/(2* (注意不等價(jià)于 d=d/2* 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 39頁 賦值表達(dá)式 由變量、賦值運(yùn)算符和表達(dá)式連接起來的式子稱為賦值表達(dá)式。 賦值表達(dá)式的值就是被賦值的變量的值。 例如, a=123是一個(gè)賦值表達(dá)式, a=123這個(gè)賦值表達(dá)式的值就是 23,所以a=123這個(gè)賦值表達(dá)式的值就是 123。 例如, b+=456也是一個(gè)賦值表達(dá)式, b+=456這個(gè)賦值表達(dá)式的值就是 為 b+=456等價(jià)于 b=b+456,若 00,則執(zhí)行 b=b+456后, 56,所以 b+=456這個(gè)賦值表達(dá)式的值就是 756。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 40頁 下面是賦值表達(dá)式的其它幾個(gè)例子: x=(y=23)+(z=17) ( 2,所以賦值表達(dá)式的值是 32) x/=8*(y=2) (若 2,執(zhí)行 x/=8*(y=2)后, ,所以賦值表達(dá)式的值是 2) y1=y2= (執(zhí)行 y1=y2=后, ,所以賦值表達(dá)式的值是 8) 賦值表達(dá)式的后面加上分號(hào)(;),就成為賦值語句。 賦值表達(dá)式也可以在賦值語句之外的其它語句中出現(xiàn)。例如: ( ch=) != n) %c”, 上面語句中出現(xiàn)了賦值表達(dá)式“ ch=”(函數(shù)會(huì)在后面第 3章中詳細(xì)介紹), ch=的值,若該值不等于 n,則輸出 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 41頁 賦值表達(dá)式的類型轉(zhuǎn)換 當(dāng)賦值運(yùn)算符左邊的變量數(shù)據(jù)類型與右邊的表達(dá)式的數(shù)據(jù)類型不相同時(shí),需要進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,系統(tǒng)把右邊的數(shù)據(jù)轉(zhuǎn)換成左邊數(shù)據(jù)類型的數(shù)據(jù)。 轉(zhuǎn)換后可能會(huì)發(fā)生數(shù)據(jù)丟失現(xiàn)象。 例如,左邊為 邊為 于 32位)大于 16位),造成 6位無法復(fù)制到 此可能丟失數(shù)據(jù)。同理,左邊為 邊為 可能丟失數(shù)據(jù)。 下面分幾種情況討論: 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 42頁 1整型和字符型之間的轉(zhuǎn)換 ( 1)字符型數(shù)據(jù)賦給整型變量 由于字符型數(shù)據(jù)在內(nèi)存中占 8位,而整型變量在內(nèi)存中至少占 16位,因此將字符型數(shù)據(jù)的 8位放到整型變量的低 8位中。對(duì)整型變量其它位的處理:有的系統(tǒng)是對(duì)整型變量其它位補(bǔ) 0;有的系統(tǒng)是根據(jù)字符型數(shù)據(jù)的最高位的值來決定補(bǔ) 1還是補(bǔ) 0。 例如 +,還是補(bǔ) 0。若字符型數(shù)據(jù)的最高位值為 0,則對(duì)整型變量高 8位補(bǔ) 0;若字符型數(shù)據(jù)的最高位值為 1,則對(duì)整型變量高 8位補(bǔ) 1。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 43頁 ( 2)整型( 據(jù)賦給字符型變量 由于字符型數(shù)據(jù)在內(nèi)存中占 8位,所以只將整型數(shù)據(jù)的低 8位送到字符型變量中。 例如,若將十進(jìn)制 22賦給字符型變量 為 322的二進(jìn)制形式是 0000000101000010,它的低 8位是 01000010(十進(jìn)制形式是 66),所以字符型變量 1000010(即 66),若執(zhí)行“ %c”, ”語句則輸出字符 B,因?yàn)?B的6(十進(jìn)制)。 例如,若將十進(jìn)制 5賦給字符型變量 為 65的二進(jìn)制形式是 0000000001000001,它的低 8位是01000001(十進(jìn)制形式也是 65),所以字符型變量 1000001,若執(zhí)行“ %c”,” 語句則輸出字符 A。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 44頁 2整型之間的轉(zhuǎn)換 ( 1) 將 6位二進(jìn)制代碼送到 6位中,如果 號(hào)位是 0),則 6位補(bǔ) 0;如果號(hào)位是 1),則 6位補(bǔ) 1。高 16位補(bǔ) 0或 1稱為符號(hào)擴(kuò)展。 ( 2) 只將 6位送到 ( 3) 此時(shí)不存在符號(hào)擴(kuò)展問題,只需將 即可。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 45頁 ( 4) 將 是如果范圍超過其它整型變量允許的范圍,則會(huì)出錯(cuò)。 例如,若 a是 a=65535,而 執(zhí)行“ b=a;”, 由于 111111111111111, 所以 111111111111111, 由于最高位 (符號(hào)位 )是 1,因此 據(jù)補(bǔ)碼知識(shí),可知 1,執(zhí)行“ %d”, b);”將輸出 ( 5)非 此時(shí)也是原樣照賦(最高的符號(hào)位也一起傳送)。 例如,若 a是 b是 b=執(zhí)行“ a=b;”, 由于 111111111111111, 所以 111111111111111。 若執(zhí)行“ %d”, a);”,將輸出 65535。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 46頁 3實(shí)型與整型之間的轉(zhuǎn)換 ( 1)整型數(shù)據(jù)賦給實(shí)型變量 系統(tǒng)將整型數(shù)據(jù)轉(zhuǎn)換成單(或雙)精度實(shí)型數(shù)據(jù),保持?jǐn)?shù)值不變,賦值給實(shí)型變量。 ( 2)實(shí)型數(shù)據(jù)賦給整型變量 單(或雙)精度實(shí)型數(shù)據(jù)賦給整型變量,舍棄實(shí)型數(shù)據(jù)的小數(shù)部分,將整數(shù)部分賦給整型變量。 例如,若 n是 行“ n=的結(jié)果使 ,執(zhí)行“ %d”, n);”將輸出 5。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 47頁 4實(shí)型之間的轉(zhuǎn)換 ( 1) 此時(shí)保持?jǐn)?shù)值不變,存放到 內(nèi)存中以 64位二進(jìn)制形式存儲(chǔ)。 ( 2) 此時(shí)截取 位有效數(shù)字,存放到 內(nèi)存中以 32位二進(jìn)制形式存儲(chǔ)。此時(shí)可能要丟失數(shù)據(jù),注意數(shù)值范圍不要溢出。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 48頁 其它運(yùn)算符和表達(dá)式 自增、自減運(yùn)算符 自增和自減運(yùn)算符都是單目運(yùn)算符, 自增運(yùn)算符( +)的作用是使變量的值增 1, 自減運(yùn)算符( 作用是使變量的值減 1。 對(duì)于 i, +i和 i+都等價(jià)于 i=i+1, i= +i+和 前綴表示法是將 減 1,再在表達(dá)式中使用; 后綴表示法是先在表達(dá)式中使用 將 減 1。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 49頁 例 自增、自減運(yùn)算符的使用。 # i,j,k; i=6; j=+i; /*表達(dá)式 + */ k=i+; /*表達(dá)式 i+的值是 7 */ %d, %d, %dn ,j,k,i); i= j= /*表達(dá)式 7 */ k= /*表達(dá)式 7 */ %d, %d, %dn ,j,k,i); ; 輸出結(jié)果為: 7, 7, 8 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 50頁 要注意的幾點(diǎn): ( 1)自增、自減運(yùn)算符,不能用于常量和表達(dá)式。 例如, +6、 -(i+3*j)等都是非法的。 ( 2)自增、自減運(yùn)算符的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,與單目運(yùn)算符 -(取負(fù))和!(邏輯非)的優(yōu)先級(jí)相同,結(jié)合方向自右至左。 例如 等價(jià)于 -( a+)。 ( 3)像“ %d, %d n“ , i, i+);”這樣出現(xiàn)“ i, i+”的語句,在不同的編譯系統(tǒng)中結(jié)果是不同的。 若 ,按從左至右求值,輸出“ 6, 6”;按從右至左求值,輸出“ 7, 6”。 是按從右至左求值的,而 +是按從左至右求值的。 ( 4)自增或自減運(yùn)算符最好單獨(dú)使用,避免自增或自減運(yùn)算與其它運(yùn)算符混合使用。像 i+避免使用。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 51頁 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 號(hào)將兩個(gè)表達(dá)式連接起來,形成一個(gè)表達(dá)式,稱為逗號(hào)表達(dá)式。它的一般形式如下: 表達(dá)式 1,表達(dá)式 2 逗號(hào)表達(dá)式的求值過程是:先求表達(dá)式 1的值,再求表達(dá)式 2的值,將表達(dá)式 2的值作為逗號(hào)表達(dá)式的值。 例如,逗號(hào)表達(dá)式“ 86+5”的值是 11, 因?yàn)楸磉_(dá)式 6+5的值是 11。 例如,逗號(hào)表達(dá)式“ k=2*3, +k”的值是 7, 因?yàn)榈谝粋€(gè)表達(dá)式 k=2*3的值是 6, ,所以第二個(gè)表達(dá)式 +。 注意,賦值運(yùn)算符的優(yōu)先級(jí)高于逗號(hào)運(yùn)算符,所以“ k=2*3,+k”是逗號(hào)表達(dá)式,不要將其理解為“ k=( 2*3, +k)”。 例如,逗號(hào)表達(dá)式“ a=6, a+=9”的值是 15。 因?yàn)榈谝粋€(gè)表達(dá)式 a=6的值是 6, ,所以第二個(gè)表達(dá)式 a+=9(等價(jià)于 a=a+9)的值是 15。 第 2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第 52頁 一個(gè)逗號(hào)表達(dá)式可與另一個(gè)表達(dá)式組成新的逗號(hào)表達(dá)式,例如“(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論