第五章再談數(shù)據(jù)類型運(yùn)算符模板2_第1頁(yè)
第五章再談數(shù)據(jù)類型運(yùn)算符模板2_第2頁(yè)
第五章再談數(shù)據(jù)類型運(yùn)算符模板2_第3頁(yè)
第五章再談數(shù)據(jù)類型運(yùn)算符模板2_第4頁(yè)
第五章再談數(shù)據(jù)類型運(yùn)算符模板2_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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)介

1、第五章 再談數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 主要內(nèi)容 整形整形 1 實(shí)數(shù)實(shí)數(shù) 2 字符型字符型 3 類型溢出問(wèn)題類型溢出問(wèn)題 4 位運(yùn)算位運(yùn)算 54 5 表達(dá)式表達(dá)式 54 6 5.1 整型數(shù)據(jù)的存儲(chǔ) 5.1.1 整型數(shù)據(jù)的存儲(chǔ) 5.1.2 整型常量 5.1.3 整型數(shù)據(jù)的輸入 5.1.4 整型數(shù)據(jù)的輸出 5.1.1整型數(shù)據(jù)的存儲(chǔ) 32位機(jī)的整數(shù)類型 名稱全稱類型說(shuō)明符縮寫(xiě)位數(shù)范圍 整型intint16-2,147,483,648 至 2,147,483,647 無(wú)符號(hào)整型unsigned intunsigned160 至 4,294,967,295 短整型short intshort16-3276

2、8 至 +32767 無(wú)符號(hào)短整 型 unsigned short int unsigned short160 至 65,535 長(zhǎng)整型long intlong32-2,147,483,648 至 2,147,483,647 無(wú)符號(hào)長(zhǎng)整 型 unsigned long int unsigned long320 至 4,294,967,295 5.1.2 整型常量 整型常量分為十進(jìn)制整型常量、八進(jìn)制整型常量和整型常量分為十進(jìn)制整型常量、八進(jìn)制整型常量和 十六進(jìn)制整型常量三種表示形式。十六進(jìn)制整型常量三種表示形式。 (1)十進(jìn)制整型常量)十進(jìn)制整型常量 這種常量只能出現(xiàn)這種常量只能出現(xiàn) 09 的數(shù)

3、字,可帶正、負(fù)號(hào)。例的數(shù)字,可帶正、負(fù)號(hào)。例 如:如:0 1 364 28 -34 (2)八進(jìn)制整型常量)八進(jìn)制整型常量 這種常量是以數(shù)字這種常量是以數(shù)字 0 開(kāi)頭的八進(jìn)制數(shù)字串。其中數(shù)開(kāi)頭的八進(jìn)制數(shù)字串。其中數(shù) 字為字為 07。例如:。例如: 0111(十進(jìn)制(十進(jìn)制 73) 011(十進(jìn)制(十進(jìn)制 9) 0123(十進(jìn)制(十進(jìn)制 83) /程序5-1 #include int main() int a=025; printf(%dn, a); return 0; 運(yùn)行結(jié)果:21 (3)十六進(jìn)制整型常量)十六進(jìn)制整型常量 這種常量是以這種常量是以 0 x或或 0X開(kāi)頭的十六進(jìn)制數(shù)開(kāi)頭的十六進(jìn)

4、制數(shù) 字串。其中每個(gè)數(shù)字可以是字串。其中每個(gè)數(shù)字可以是 09、af或或 AF 中的數(shù)字或英文字母。例如:中的數(shù)字或英文字母。例如: 0 x11(十進(jìn)制(十進(jìn)制 17) 0Xa5(十進(jìn)制(十進(jìn)制 165) 0 x5a(十進(jìn)制(十進(jìn)制 90) /程序5-2 #include int main() int a=0 x25; printf(%dn, a); return 0; 運(yùn)行結(jié)果:37 以上三種進(jìn)制的常量可用 于不同的場(chǎng)合。大多數(shù)場(chǎng) 合中采用十進(jìn)制常量,但 當(dāng)編寫(xiě)系統(tǒng)程序時(shí),如表 示地址等,常用八進(jìn)制或 十六進(jìn)制常量。 5.1.3 整型數(shù)據(jù)的輸入 (1)格式符格式符d、u、o、 、x %d或或%

5、i 以十進(jìn)制有符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù)以十進(jìn)制有符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù) %u 以十進(jìn)制無(wú)符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù)以十進(jìn)制無(wú)符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù) %o 以八進(jìn)制有符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù)以八進(jìn)制有符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù) %x 或或%X 以十六進(jìn)制有符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù)以十六進(jìn)制有符號(hào)整數(shù)形式轉(zhuǎn)換輸入數(shù)據(jù) /程序5-3 #include int main() int a; scanf(%x, printf(%dn, a); return 0; 輸入:25 輸出:37 輸入:a1 輸出:161 (2)寬度寬度 用十進(jìn)制整數(shù)指定輸入的寬度用十進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù)即字符數(shù))。 例

6、如:例如: scanf(%5d, 輸入:輸入: 12345678 只把只把12345賦予變量賦予變量a,其余部分被截去。,其余部分被截去。 /程序5-4:判斷水仙花數(shù) #include int main() int a,b,c; scanf(%1d%1d%1d, if(a*a*a+b*b*b+c*c*c=100*a+10*b+c) printf(yesn); else printf(non); return 0; 5.1.3 整型數(shù)據(jù)的輸入 (3)“*”符符 用以表示該輸入項(xiàng)讀入后不賦予相應(yīng)的變用以表示該輸入項(xiàng)讀入后不賦予相應(yīng)的變 量,即跳過(guò)該輸入值。量,即跳過(guò)該輸入值。 如如 scanf(%

7、d %*d %d, 當(dāng)輸入為:當(dāng)輸入為:1 2 3 時(shí),把時(shí),把1賦予賦予a,2被跳過(guò),被跳過(guò), 3賦予賦予b。 解決問(wèn)題: 輸入某人的18位身份證號(hào),輸出其出生 日期,輸出格式為:yyyy-mm-dd 5.1.3 整型數(shù)據(jù)的輸入 /程序5-5 #include int main() int y, m, d; scanf(%*6d%4d%2d%2d%*d, printf(%d-%02d-%02dn, y, m, d); return 0; 模仿練習(xí) 手機(jī)短號(hào) 大家都知道,手機(jī)號(hào)是一個(gè)11位長(zhǎng)的數(shù)字串 ,同時(shí),作為學(xué)生,還可以申請(qǐng)加入校園網(wǎng), 如果加入成功,你將另外擁有一個(gè)短號(hào)。假設(shè) 所有的短號(hào)

8、都是是 6+手機(jī)號(hào)的后5位,比如號(hào) 碼手機(jī),對(duì)應(yīng)的短號(hào)就是 645678。 現(xiàn)在,如果給你一個(gè)11位長(zhǎng)的手機(jī)號(hào)碼,你能 輸出對(duì)應(yīng)的短號(hào)嗎? 5.1.4 整型數(shù)據(jù)的輸出 (1)格式符格式符d、u、o、 、x %d或或%i 將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制有符號(hào)整數(shù)輸出將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制有符號(hào)整數(shù)輸出 %u將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制無(wú)符號(hào)整數(shù)輸出將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制無(wú)符號(hào)整數(shù)輸出 %o將數(shù)據(jù)轉(zhuǎn)換為將數(shù)據(jù)轉(zhuǎn)換為八進(jìn)制無(wú)符號(hào)八進(jìn)制無(wú)符號(hào)整數(shù)輸出整數(shù)輸出 %x 或或%X 將數(shù)據(jù)轉(zhuǎn)換為將數(shù)據(jù)轉(zhuǎn)換為十六進(jìn)制無(wú)符號(hào) 十六進(jìn)制無(wú)符號(hào)整數(shù)輸整數(shù)輸 出出 /程序5-6 #include int main() in

9、t a=100; printf(%on, a); printf(%xn, a); return 0; 輸出: 144 64 不能輸出負(fù)的八進(jìn)制和十六進(jìn)制不能輸出負(fù)的八進(jìn)制和十六進(jìn)制 %o和%x看起來(lái)跟輸入格式一樣,其實(shí)有區(qū)別的, 輸入格式符可以轉(zhuǎn)換負(fù)的八進(jìn)制和十六進(jìn)制數(shù), 但不能輸出負(fù)的八進(jìn)制和十六進(jìn)制 printf沒(méi)有定義帶符號(hào)八進(jìn)制的輸出格式字串, printf把內(nèi)存中的實(shí)際情況顯示出來(lái)了,因?yàn)闆](méi)有人 習(xí)慣看到一個(gè)負(fù)的八進(jìn)制或十六進(jìn)制字符 /程序5-7 #include int main() int a; scanf(%x, printf(十進(jìn)制: %d, printf(十六進(jìn)制: %xn

10、, a); return 0; 輸入 -25 輸出: -37 ffffffdb 輸出寬度 (2)寬度寬度 指定數(shù)據(jù)的最少寬度,若實(shí)際數(shù)據(jù)大于指定寬度則指定數(shù)據(jù)的最少寬度,若實(shí)際數(shù)據(jù)大于指定寬度則 按實(shí)際數(shù)據(jù)寬度輸出按實(shí)際數(shù)據(jù)寬度輸出 n(n=1,2,3.) 寬度至少為寬度至少為n位,不夠以空格填充位,不夠以空格填充 0n(n=1,2,3.) 寬度至少為寬度至少為n位,不夠左邊以位,不夠左邊以0填填 充充 如:如:%4d、%04d 其它修飾符 (3)其它修飾符其它修飾符 無(wú)無(wú) 右對(duì)齊,左邊填充右對(duì)齊,左邊填充0和空格和空格 - 左對(duì)齊,右邊填充空格左對(duì)齊,右邊填充空格 + 在數(shù)字前增加符號(hào)在數(shù)字

11、前增加符號(hào) + 或或 - 0 將輸出的前面補(bǔ)上將輸出的前面補(bǔ)上0,直到占滿指定列寬為止(不,直到占滿指定列寬為止(不 可以搭配使用可以搭配使用-) 空格空格 輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào)輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào),方方 便對(duì)齊。便對(duì)齊。 # 當(dāng)格式符是當(dāng)格式符是c,s,d,i,u時(shí)沒(méi)有影響時(shí)沒(méi)有影響 ,格式符是,格式符是o,x,X 時(shí),分別在數(shù)值前增加時(shí),分別在數(shù)值前增加0,0 x,0X 5.2 實(shí)型數(shù)據(jù) 5.2.1實(shí)型數(shù)據(jù)的存儲(chǔ) 5.2.2實(shí)型常量 5.2.3實(shí)型數(shù)據(jù)的輸入 5.2.4實(shí)型數(shù)據(jù)的輸出 5.2.1 實(shí)型數(shù)據(jù)的存儲(chǔ) 實(shí)數(shù)類型,又稱為浮點(diǎn)型,在計(jì)算機(jī)中是用浮點(diǎn)格

12、式(小數(shù)點(diǎn)是“浮動(dòng)的”)進(jìn)行存儲(chǔ)的。存儲(chǔ)實(shí)型 數(shù)據(jù)時(shí),分為符號(hào)位、階碼和尾數(shù)3部分。例如實(shí) 數(shù)-1.234103,符號(hào)是1,階碼是3,尾數(shù)是 1.2345。 階碼所占的位數(shù)決定了實(shí)數(shù)的表示范圍,尾數(shù)所占的尾 數(shù)決定了實(shí)數(shù)的精度。 小數(shù)的符號(hào)位小數(shù)的符號(hào)位 指數(shù)的符號(hào)位指數(shù)的符號(hào)位 單精度浮點(diǎn)型 float 在 C 語(yǔ)言中用于存儲(chǔ)單精度浮點(diǎn)數(shù) float 32 位10-38 至 10+38 ,7位有效數(shù)字 聲明: float selling_price; 初始化: float selling_price = 11.3; selling_price = 65.90; 雙精度浮點(diǎn)型 內(nèi)存內(nèi)存 flo

13、at double 213.5671435568967 64位位 取值范圍:10-308 至 10308 10-38 至 10+38 ,7位有效數(shù)字 聲明: double pressure_level; 初始化: pressure_level = 213.5671435568967; double dvalue = 35.4; 去VC下試試! 5.2.2 實(shí)型常量 實(shí)型常量有兩種表示形式:十進(jìn)制小數(shù)形式、指數(shù)形 式。 (1)十進(jìn)制小數(shù)形式 十進(jìn)制小數(shù)形式為包含一個(gè)小數(shù)點(diǎn)的十進(jìn)制數(shù)字串。 (2)指數(shù)形式 指數(shù)形式的格式由兩部分組成:常量部分和指數(shù)部分。 其中指數(shù)部分是在 e 或 E,后跟整數(shù)階碼

14、例如: 1e15 /表示數(shù)值 11015 0.35e+1 /表示數(shù)值 0.35101 78e-1 /表示數(shù)值 7810-1 /程序5-8 #include int main() double a; scanf(%lf, printf(%fn, a); return 0; 輸入1e2 輸出100.000000 5.2.3 實(shí)型數(shù)據(jù)的輸入 (1)格式符格式符f, g, e (2)可加修飾符可加修飾符l (3)可以指定讀入數(shù)據(jù)的寬度,但不能指定可以指定讀入數(shù)據(jù)的寬度,但不能指定 精度精度 如:如: double a; scanf(“%5lf”, /正確正確 scanf(“%5.2lf”, /錯(cuò)誤錯(cuò)誤

15、 /程序5-9 #include int main() double a; scanf(%5lf, printf(%fn, a); return 0; 輸入12.34567 輸出12.340000 輸入:1.2e12 輸出:12.0000000 /只讀入前5個(gè)字符12.34 /只讀入前5個(gè)字符1.2e1 5.2.4 實(shí)型數(shù)據(jù)的輸出 (1)格式符 f 浮點(diǎn)數(shù) E/e 用科學(xué)表示格式的浮點(diǎn)數(shù) g 使用%f和%e表示中的總的位數(shù)表示最短的來(lái)表 示浮點(diǎn)數(shù) G 同g格式,但表示為指數(shù) (2) 寬度 用于控制顯示數(shù)值的寬度 (3) 精度用于控制小數(shù)點(diǎn)后面的位數(shù) (4)其它修飾符同前 /程序5-10 #in

16、clude int main() double a; scanf(%lf, printf(%en, a); printf(%15.3en, a); printf(%015.3en, a); return 0; 輸入12.345 輸出 1.234500e+002 1.235e+002 000001.235e+002 5.3 字符數(shù)據(jù) 5.3.1字符型數(shù)據(jù)的存儲(chǔ) 5.3.2轉(zhuǎn)義序列 5.3.3字符型數(shù)據(jù)的輸入輸出 5.3.1 字符數(shù)據(jù)的存儲(chǔ) 字符型數(shù)據(jù)的存儲(chǔ)方法根據(jù)計(jì)算機(jī)的不同 而不同,因?yàn)椴煌瑱C(jī)器可能有不同的字符 集。當(dāng)今最常用的字符集是ASCII(美國(guó)信 息交換標(biāo)準(zhǔn)碼)字符集, 它用7個(gè)二進(jìn)制

17、為表示128個(gè)字符。在ASCII 碼中,數(shù)字0-9用01100000111001碼來(lái)表 示,字母A-Z用10000011011010表示。 值符號(hào)值符號(hào)值符號(hào) 0空字符44,91 32空格45-92 33!46.93 3447/94 35#48 570 9 95- 36$58:96 37%59;97 122a z 38 int i; i=a; /*i的值為97*/ ch=65; /*ch中的整數(shù)值為65*/ ch=ch+1; /*ch中的整數(shù)值為66*/ /* i和ch中的值即可用%d輸出,又可用%c輸出*/ printf(%d %cn, i, i); printf(%d %cn, ch, c

18、h); return 0; 當(dāng)計(jì)算中出現(xiàn)字符時(shí),C語(yǔ) 言統(tǒng)統(tǒng)按整數(shù)對(duì)待,只使 用它對(duì)應(yīng)的整數(shù)值。 %c格式符將變量的內(nèi)容解 釋為單個(gè)字符,%d將變量 的內(nèi)容解釋為一個(gè)整數(shù)。 5.3.2 轉(zhuǎn)義序列 輸出結(jié)果: Name: Audrey Hepburn Movie: Roman Holiday 代碼: printf(“Name: Audrey Hepburn n Movie: Roman Holiday”); 轉(zhuǎn)義序列允許在輸出結(jié)果中包括特殊字符 轉(zhuǎn)義序列轉(zhuǎn)義序列名稱名稱描述描述 a 警告產(chǎn)生一則警告。 b 退格將光標(biāo)回退一格。 f 換頁(yè)將光標(biāo)移到下一頁(yè)的第一格。 n 換行將光標(biāo)移到下一行的第一格

19、。 r 回車(chē)將光標(biāo)移到當(dāng)前行的第一格。 t 水平制表 將光標(biāo)移到下一個(gè)水平制表位置。 v 垂直制表將光標(biāo)移到下一個(gè)垂直制表位置。 單引號(hào)產(chǎn)生一個(gè)單引號(hào)。 雙引號(hào)產(chǎn)生一個(gè)雙引號(hào)。 ? 問(wèn)號(hào)產(chǎn)生一個(gè)問(wèn)號(hào)。 反斜線產(chǎn)生一條反斜線。 0 空產(chǎn)生一個(gè)空字符。 5.3.3 字符數(shù)據(jù)的輸入輸出 scanf()函數(shù)和getchar()都可以用來(lái)讀入單個(gè) 字符。但與整型和實(shí)型數(shù)據(jù)的讀入不同,所 有輸入都是合法的字符輸入。 若有以下輸入語(yǔ)句: scanf(%c%c%c, 如果輸入為: a b c 結(jié)果是: ch1值為a,ch2值為 ,ch3值為b。 如何跳過(guò)空白符 如果在程序中需要先讀入一個(gè)整數(shù)存入變量n,然后

20、讀入一個(gè)字符存入變量ch,輸入格式如下: 5 M 該如何用scanf()函數(shù)實(shí)現(xiàn)呢? 若寫(xiě)為: scanf(%d, scanf(%c, 存入ch中的將是數(shù)字5之后的回車(chē)符。 解決方法 解決方法1: 加一個(gè)讀入語(yǔ)句將數(shù)組5之后的回車(chē)處理掉: scanf(%d, getchar(); /* 將緩沖區(qū)中的回車(chē)讀入*/ scanf(%c, 解決方法2: 為了強(qiáng)制scanf()函數(shù)在讀入字符前跳過(guò)空白符,需要在 格式串中的%c之前加上一個(gè)空格: scanf(%d, scanf( %c, scanf格式串中的空白意味著“跳過(guò)零個(gè)或多個(gè)空白字符” 。 5.4 數(shù)據(jù)類型的選擇 5.4.1 整型溢出問(wèn)題 5.4

21、.2 實(shí)型溢出問(wèn)題 5.4.3 字符型溢出問(wèn)題 5.4.4 極限常量 5.4.1 整型溢出問(wèn)題 階乘的結(jié)果要存儲(chǔ)為什么類型? n是一個(gè)不大于20的整數(shù),估算一下20!是 一個(gè)多少位的十進(jìn)制整數(shù)? 32位整型顯然表達(dá)不了 以下三個(gè)程序分別用了32位整型、雙精度 浮點(diǎn)型和64位整型來(lái)存儲(chǔ)階乘結(jié)果,進(jìn)一 步認(rèn)識(shí)不同數(shù)據(jù)類型的表示范圍。 解決問(wèn)題: 輸入一個(gè)整數(shù)n(n=20),輸出1-n的階乘表 #include int main( ) int i, n, fact; printf(input n: n); scanf (%d, fact=1; /* 將階乘fact的初值置為1 */ for ( i

22、= 1; i = n; i+ ) fact = fact * i ; /遞推計(jì)算i的階乘 printf ( %d %dn, i, fact ); return 0; 源程序5-12a:結(jié)果用int型 12!以前的能正確計(jì)算,從13!開(kāi)始結(jié)果出錯(cuò)! 超出int型的表達(dá)范圍!int只能正確表達(dá)9位及以下整數(shù) #include int main() int i, n; double fact; printf(input n: n); scanf (%d, for (fact=1, i = 1; i = n; i+ ) fact = fact * i ; /遞推計(jì)算i的階乘 printf ( %d %

23、.0f n, i, fact ); return 0; 源程序5-12b:結(jié)果用double型 21以前的可以正確計(jì)算,22以后都是近似結(jié)果! double型也不是萬(wàn)能的,只有16位有效數(shù)字!21! 有20位,但在浮點(diǎn)表示中末尾0不占有效位。 #include int main() int i, n; _int64 fact; scanf (%d, for (fact=1, i = 1; i = n; i+ ) fact = fact * i ; /遞推計(jì)算i的階乘 printf ( %d %I64dn, i, fact ); return 0; 源程序5-12c:結(jié)果用64位整型 20!以前

24、的可以正確計(jì)算,21!以后結(jié)果出錯(cuò)! _int64型能表示所有19位及以下整數(shù)。 表達(dá)式1是 一個(gè)逗號(hào) 表達(dá)式 5.4.2 實(shí)型溢出問(wèn)題 解決問(wèn)題: 求nn的最高位,n是不大于10000 的正整數(shù)。 最后的冪要存儲(chǔ)為什么類型? 即使只取n的最高位數(shù)字,如果為9,9的 10000次方也會(huì)超過(guò)double類型的表示范圍, double類型可表示的最大指數(shù)為308。 #include #include int main() int n, d; double ans; scanf(%d, d=n; while(d9) /*取最高位*/ d=d/10; ans=pow(d, n); ans=ans/po

25、w(10,(int)log10(ans); /*取最高位*/ printf(%dn,(int)ans); return 0; 源程序5-13a:用pow函數(shù)求冪 輸入小于500的數(shù)據(jù),運(yùn)行結(jié)果正確 輸入大于等于500的數(shù)據(jù),結(jié)果錯(cuò)誤 因?yàn)閜ow函數(shù)的返回值是double型, double型表示的指數(shù)范圍是-308到 +308。 #include #include int main() int i, n, d,ans; scanf(%d, d=n; while(d9) /*取最高位*/ d=d/10; ans=1; for(i=1;i9) /*若超過(guò)一位,則只取最高位*/ ans=ans/10;

26、 printf(%dn,ans); return 0; 源程序5-13b:用循環(huán)求冪 5.4.3 字符型溢出問(wèn)題 輸入一個(gè)英文小寫(xiě)字符(字符數(shù)小于80) 和正整數(shù)k(k26),將英文字母加密并輸 出。加密思想:將每個(gè)字母c加一個(gè)序數(shù)k, 即用它后面的第k個(gè)字母代替,變換公式: c=c+k。如果字母為z,則后一個(gè)字母是a, 也就是字母表形成一個(gè)圓。 解決問(wèn)題: 字符加密 #include int main() char ch; int k; scanf(%c %d, ch=ch+k; /可能類型溢出 if(chz) ch=ch-26; printf(%cn,ch); return 0; 源程序5

27、-14:char類型溢出 輸入小于g的字符和任意k(1-25), 運(yùn)行結(jié)果正確 當(dāng)輸入z 6 或 g 25 , 結(jié)果錯(cuò)誤 原因是char類型溢出 signed char: -128 至 +127 z+6的值是的值是128超出超出char表表 示范圍示范圍 unsigned char ch; 5.4.4 極限常量 頭文件定義了表示每種類型極限值的符 號(hào)常量。表4-1列出了每種帶符號(hào)類型的極限值符 號(hào)常量名。 類型下限上限 charCHAR_MINCHAR_MAX intINT_MININT_MAX longLONG_MINLONG_MAX flaotFLT_MINFLT_MAX doubleDB

28、L_MINDBL_MAX 用極限常量初始化變量 在求最大值問(wèn)題中,可以用整數(shù)類型可以 存儲(chǔ)的最小極限值INT_MIN來(lái)初始化max 。 源程序改寫(xiě)如下: max=INT_MIN; /* 用int的最小極限值來(lái)初始化max*/ for(i=1; i=n; i+) /*用for語(yǔ)句控制循環(huán)n次*/ 源程序的開(kāi)頭要加上: #include 5.5 位運(yùn)算 運(yùn)算符 含義 描述 int b = 5; printf(“%d”,a (1)清零 若想對(duì)一個(gè)存儲(chǔ)單元清零,即使其全部二 進(jìn)制位為0,只要找一個(gè)二進(jìn)制數(shù),其中各 個(gè)位符合一下條件: 原來(lái)的數(shù)中為1的位,新數(shù)中相應(yīng)位為0。 然后使二者進(jìn)行 int b

29、= 240; printf(%d,a 輸出:輸出:32 (2)取一個(gè)數(shù)中某些指定位 若有一個(gè)整數(shù)a(2byte),想要取其中的低字節(jié), 只需要將a與8個(gè)1按位與即可。 a 00101100 10101100 b 00000000 11111111 c 00000000 10101100 如判斷整數(shù)n的奇偶性 if(n int b = 59; printf(%d,a 2、“按位或”運(yùn)算符(|) 兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該 位的結(jié)果值為1。借用邏輯學(xué)中或運(yùn)算的話 來(lái)說(shuō)就是,一真為真。 例如:60(8)|17(8),將八進(jìn)制60與八 進(jìn)制17進(jìn)行按位或運(yùn)算。 00110000 |00001111 00111111 c語(yǔ)言源代碼:語(yǔ)言源代碼: #include int main() int a=060; int b = 017; pr

溫馨提示

  • 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)論