C語言基本數(shù)據(jù)類型(同名716)課件_第1頁
C語言基本數(shù)據(jù)類型(同名716)課件_第2頁
C語言基本數(shù)據(jù)類型(同名716)課件_第3頁
C語言基本數(shù)據(jù)類型(同名716)課件_第4頁
C語言基本數(shù)據(jù)類型(同名716)課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第2章 基本數(shù)據(jù)類型字符集及詞法約定2.1常 量2.2簡 單 變 量2.3基本數(shù)據(jù)類型及其轉(zhuǎn)換 2.4printf和scanf函數(shù)的一般使用2.5 本章介紹有關(guān)數(shù)據(jù)類型的最基本的內(nèi)容,包括表示方式、取值范圍及一般轉(zhuǎn)換規(guī)則等。另外也簡要介紹常用庫函數(shù)printf( )和scanf( )的一般使用格式。2.1 字符集及詞法約定2.1.1 字符集(1)數(shù)字:我們平常使用的10個十進(jìn)制數(shù)字:0,1,9。(2)字母:大、小寫英文字母各26個:A,B,Z和a,b,z。 大、小寫字母是有區(qū)別的,表示不同的字符。(3)圖形符號:29個圖形(可見)字符,即: ! # % & ( ) * + , / ; : ?

2、_ | (4)轉(zhuǎn)義序列。表2-1列出了C語言源程序中常用到的一些轉(zhuǎn)義序列及其含義。 字 符 名表示形式含 義備 注換行n把打印(顯示)位置移到下一行的起始位置水平制表t把打印位置移到當(dāng)前行的下一個制表點(diǎn)(通常是右移8個字符的間隔)與實(shí)現(xiàn)有關(guān)表2-1轉(zhuǎn)義序列及其含義字 符 名表示形式含 義備 注垂直制表v把打印位置移到下一行制表點(diǎn)起始位置與實(shí)現(xiàn)有關(guān)退格b把打印位置在當(dāng)前行上向后退一個字符位置與實(shí)現(xiàn)有關(guān)回車r把打印位置移到當(dāng)前行的起始位置換頁f把打印位置移到下一個邏輯頁開頭的起始位置報警a產(chǎn)生可聽或可見的報警,位置不變與實(shí)現(xiàn)有關(guān)問號?打印問號單引號打印單引號雙引號打印雙引號反斜線打印一個反斜線續(xù)表

3、(1)標(biāo)識符 在C語言中,用來標(biāo)記常量、變量、數(shù)據(jù)類型、函數(shù)及程序的名字。必須符合下列語法規(guī)則: 應(yīng)以字母(大小寫皆可)或下線符(_)中任一個字符開頭。2.1.2 詞法約定 在第一個字母后,可以是任意字母、下線符和數(shù)字組成的字符序列,此序列可為空串。 根據(jù)以上規(guī)則,下列字符序列是合法的標(biāo)識符:NAME1 name1 Total_5 Paper _i3 _out 而以下字符序列不是合法的標(biāo)識符:NAME 1 中間留有空格,它不是字母數(shù)字串name$2 中間有$,此為非字母、數(shù)字字符5t 開頭的是數(shù)字,而不是字母$4 開頭的是一般字符,不是字母 程序中的標(biāo)識符必須選擇恰當(dāng)。 在選擇標(biāo)識符時,要盡量

4、避免使用容易混淆的字符。 C語言區(qū)分大、小寫字母,所以name1、Name1和NAME1可在同一程序中使用,各代表不同的變量。 標(biāo)識符的最大長度還受實(shí)現(xiàn)的限制。 (2)關(guān)鍵字 在有些語言中關(guān)鍵字又稱作保留字。它是具有特定含義、專門用作語言的特定成分的一類標(biāo)識符。不能當(dāng)作一般標(biāo)識符使用。 表2-2列出C語言的全部關(guān)鍵字及其用途。關(guān) 鍵 字類 型用 途char數(shù)據(jù)類型字符量int整型量long長整型量short短整型量float單精度浮點(diǎn)量double雙精度浮點(diǎn)量unsigned無符號量(最高位不作符號位)signed有符號量struct結(jié)構(gòu)型量union聯(lián)合型量enum枚舉型量void無值量co

5、nst常量volatile易變量auto存儲類自動量extern外部量static靜態(tài)量register寄存器量typedef類型命名表2-2關(guān)鍵字及其用途關(guān) 鍵 字類 型用 途if流程控制條件語句else條件語句的另一種選擇forfor循環(huán)語句whilewhile和do-while循環(huán)語句dodo-while語句break間斷語句continue接續(xù)語句goto跳轉(zhuǎn)語句return返回語句switch多路選擇語句default多路選擇語句中的默認(rèn)情況case多路選擇語句中的情況選擇sizeof運(yùn)算符計(jì)算字節(jié)數(shù)續(xù)表(3)標(biāo)點(diǎn)符號 C語言中標(biāo)點(diǎn)符號是表示語法的符號,共有13個,即: ( ) *

6、, : = ; # 程序中往往要用到一些預(yù)先給定值的量,并且在程序執(zhí)行過程中其值不再發(fā)生變化。 這類數(shù)據(jù)一般稱為常量。2.2 常 量 C語言中有不同類型的常量,如整型常量、浮點(diǎn)常量、字符常量和字符串常量。 常量在C語言中出現(xiàn)的形式一般有兩種:一種是在程序中直接使用給定的值,2和3.1415926都是固定不變的量,而且直接以值的形式出現(xiàn)。這種形式的常量往往稱為字面量。 另一種形式是采用宏定義形式,例如: #define PI 3.1415926 經(jīng)過宏定義之后,就用標(biāo)識符來代表字面量,這種形式的常量通常稱為符號常量。符號常量的名字往往用大寫字母,不能把符號常量名當(dāng)作變量使用。 在C語言中,整常量

7、分為十進(jìn)制整常量、八進(jìn)制整常量和十六進(jìn)制整常量。普通整常量在機(jī)器中占一個字長。1十進(jìn)制整常量 十進(jìn)制整常量是帶正負(fù)號的整數(shù)。如12,2008,10001,39。2.2.1 整型常量 八進(jìn)制整常量是以數(shù)字0開頭的八進(jìn)制數(shù)字串,其中只能出現(xiàn)數(shù)字07。通常,它是無符號數(shù)(即沒有正負(fù)號的數(shù))。2八進(jìn)制整常量 十六進(jìn)制整常量是以0 x或0X開頭的十六進(jìn)制數(shù)字串,可用的數(shù)字有09,af或AF。 3十六進(jìn)制整常量(1)無符號型后綴 無符號型后綴用小寫字母u或者大寫字母U表示(unsigned int)。 例如,986u,07654u,0XFEDu等都是無符號整常量。4整常量的后綴(2)長型后綴 長型后綴用小

8、寫字母l或大寫字母L表示(long int)。例如:62l,0123L,0 x327l等。 如果一個整常量后面同時帶有后綴l(L)和u(U),那么,它的類型就是unsigned long int(無符號長整型)。例如:9999lu,077777LU等。 它有以下兩種表示形式。(1)十進(jìn)制數(shù)形式 例如:3.14 , 0.618, .618, 10.0, 123. 等都是合法的浮點(diǎn)常量。在這種形式中,一個浮點(diǎn)常量是由數(shù)字和小數(shù)點(diǎn)組成。必須有小數(shù)點(diǎn),并且小數(shù)點(diǎn)的前面或者后面必須有數(shù)字。2.2.2 浮點(diǎn)常量(2)指數(shù)形式 例如:2.98e6(或2.98E6),3.0e8(或3.0E8),6.E5,6e

9、5,.123E+4等都是合法的浮點(diǎn)常量。在這種形式中,必須帶有階碼標(biāo)志e(或E),并且e之前必須有數(shù)字,e之后的指數(shù)必須是整數(shù)。 如果浮點(diǎn)常量不帶后綴,那么它的類型就是雙精度型(double)。若在浮點(diǎn)常量后面帶有后綴字母F或f,那么它的類型就是單精度浮點(diǎn)型(float),通常簡稱為浮點(diǎn)型。在浮點(diǎn)常量后面還可帶有后綴字母l或L,此時,它的類型就是長雙精度型(long double)。在一般系統(tǒng)中,單精度浮點(diǎn)數(shù)占用4個字節(jié)(32位)的存儲單元,而雙精度浮點(diǎn)數(shù)占用8個字節(jié)。 在C語言中,字符常量是用單引號括起來的一個字符或字符序列,如 x、AB、9、*等。 除以上形式外,構(gòu)成字符常量的字符還可以是

10、轉(zhuǎn)義序列。在C語言中轉(zhuǎn)義序列有三種:簡單轉(zhuǎn)義序列、八進(jìn)制轉(zhuǎn)義序列和十六進(jìn)制轉(zhuǎn)義序列。2.2.3 字符常量(1)簡單轉(zhuǎn)義序列 ? a b f n r t v 雖然在形式上它們是由兩個字符構(gòu)成的,卻只代表一個字符。(2)八進(jìn)制轉(zhuǎn)義序列 它是由反斜線和后隨的一個、兩個或三個八進(jìn)制數(shù)字構(gòu)成的,如:014、75、6等。(3)十六進(jìn)制轉(zhuǎn)義序列 它是由反斜線、字母x和后隨的一個、兩個或三個十六進(jìn)制數(shù)字構(gòu)成,如:x9、x1A、x123等。 上述八進(jìn)制轉(zhuǎn)義序列和十六進(jìn)制轉(zhuǎn)義序列在構(gòu)成形式上雖然出現(xiàn)多個字符,但在相應(yīng)的字符常量或字符串常量中卻只代表一個字符。如014、xB9等都分別是一個字符的含義。 字符常量的類

11、型是int。 它的值就是該字符在相應(yīng)字符集中的編碼值。 字符常量可像其他整數(shù)一樣參與數(shù)值運(yùn)算。 在語言中,用0表示空字符NUL,在機(jī)器中存放時它所占字節(jié)的各位都是0,因而它的值也是0。要注意,空字符不是空白字符。還應(yīng)注意0與0的區(qū)別??兆址S脕順?biāo)識一個字符串的結(jié)尾。 它是用一對雙引號括起來的零個或多個字符組成的序列,如:Hello! This is a character string1234567890(在雙引號中沒有任何字符) 字符串常量也可以看成是一個數(shù)組,這個數(shù)組的元素為一個一個的字符。 2.2.4 字符串常量 編譯程序在編譯源文件時會自動在每個字符串末尾放上空字符“0”,作為字符串

12、的結(jié)尾,這種方式也表明:在C程序中,對字符串的長度不加限制。 一個字符串究竟有多長,要到達(dá)結(jié)尾字符“0”時才能確定。 每個字符串所需要的實(shí)際空間要比用戶給出的字符數(shù)多一個字節(jié)。 x就不同于x。前者是單獨(dú)一個字符,而后者是一個字符串,它包含了兩個字符:字母“x”和一個空字符“0” 。 變量是在程序執(zhí)行過程中其值可以改變的量。 在程序中使用一個變量之前,先要對它進(jìn)行定義:為它指定一個名稱(變量名),指明它是什么類型的變量等。變量名應(yīng)是合法的標(biāo)識符。int i;int j;int k;2.3 簡 單 變 量 同時對幾個有相同類型的變量進(jìn)行定義,也可以簡寫在一行中,如:int i,j,k; 注意,in

13、t與i之間有空格,各變量名之間要用逗號隔開,最后一個變量名后面要用分號結(jié)尾。 在C語言中定義變量的一般形式是:數(shù)據(jù)類型 變量名;或者數(shù)據(jù)類型 變量名1,變量名2,; 定義變量時,還應(yīng)注意以下幾點(diǎn)。 不同類型的變量應(yīng)在各自數(shù)據(jù)說明行上定義,不要把它們統(tǒng)統(tǒng)寫在一行上,以增加程序的可讀性。 在程序的同一部分,不允許對同一標(biāo)識符做重復(fù)定義。例如:1main( )23 int a,b,sum;4 float price,sum;5 char a,flag; 數(shù)據(jù)說明語句是以分號結(jié)尾,而同一說明語句中各個變量名之間以逗號隔開。例如:int i,j,k;2.4 基本數(shù)據(jù)類型及其轉(zhuǎn)換C語言數(shù)據(jù)類型基本類型字符

14、型整型浮點(diǎn)型雙精度型表2-3C語言數(shù)據(jù)類型 C語言數(shù)據(jù)類型枚舉類型枚舉型無值型導(dǎo)出類型數(shù)組結(jié)構(gòu)聯(lián)合函數(shù)指針型續(xù)表 2.4.1 整型int及其相關(guān)類型 在C語言中,表示整型量的關(guān)鍵字是int,所以一個整型變量i的說明形式為:int i; 在目前大多數(shù)實(shí)現(xiàn)中,整型變量的取值范圍因機(jī)器字長而異。 在字長為16位的機(jī)器上,整型變量i的取值范圍是:32768i32767 對它們可以施行如下算術(shù)運(yùn)算:+(加) (減) (乘) (除) (取模) 整數(shù)還可使用下述運(yùn)算符進(jìn)行關(guān)系運(yùn)算: = = = = != C語言中與int有關(guān)的類型還有:(1)短整型short int,簡寫為short。(2)長整型long

15、int,簡寫為long。(3)無符號整數(shù)unsigned int,簡寫為unsigned。 表示字符型變量的關(guān)鍵字是char。char c; 一個字符型變量所占用的內(nèi)存空間應(yīng)足以存放所用基本字符集中任何一個字符,通常占用一個字節(jié),即8位。2.4.2 字符型char及其相關(guān)類型 在ANSI C和ISO C中,還規(guī)定了signed char和unsigned char兩種類型,unsigned char型量的取值范圍是0255,而signed char型量的取值范圍是127127。 當(dāng)把一個字符常量賦給一個字符變量時,該字符變量的值就是相應(yīng)字符的編碼值。 在C語言中字符數(shù)據(jù)往往可以像整型數(shù)據(jù)那樣進(jìn)

16、行有關(guān)運(yùn)算。 例2-1 在ASCII字符集中,字母A的序號為65,分析以下程序的輸出結(jié)果。#include main( ) char x, y; x=A + 10; y=Z 20; printf ( %c=%d , %c=%d n , x , x , y , y) ; return(0); 字符數(shù)據(jù)可以以字符形式輸出,也可以用整數(shù)形式輸出。 表示基本浮點(diǎn)類型的關(guān)鍵字是float。float f; C語言中還提供其他兩種浮點(diǎn)類型:double和long double,分別稱作雙精度類型和長雙精度類型。float量的取值范圍是double量的子集,而double量的取值范圍又是long doubl

17、e量的子集。2.4.3 浮點(diǎn)型float 一般機(jī)器上float量占4個字節(jié)(32位),double量占8個字節(jié)(64位),而long double量要占16個字節(jié)(128位)。 浮點(diǎn)變量可進(jìn)行的算術(shù)運(yùn)算有下述4種:+* 其運(yùn)算結(jié)果仍是一個浮點(diǎn)量。但大家應(yīng)注意,取模運(yùn)算符“%”不能作用于浮點(diǎn)量上。 為了保持運(yùn)算精度,在運(yùn)算時所有的float量都被轉(zhuǎn)換成double量。int i=10;float pi=3.14;double f;f=i*pi;2.4.4 類型轉(zhuǎn)換 不同類型的量在一起進(jìn)行算術(shù)運(yùn)算時需進(jìn)行類型轉(zhuǎn)換。即:如果一個運(yùn)算符有兩個不同類型的運(yùn)算分量,那么,在操作之前先將“較低”的類型提升為

18、“較高”的類型,使二者類型統(tǒng)一,然后進(jìn)行操作;其結(jié)果是“較高”類型。而類型的高低是由其屬性(取值范圍、精度、作用等)來決定的。 由算術(shù)運(yùn)算符對運(yùn)算分量自動實(shí)施的類型轉(zhuǎn)換稱為普通算術(shù)轉(zhuǎn)換,也稱為隱式轉(zhuǎn)換。圖2-1 算術(shù)轉(zhuǎn)換規(guī)則 在進(jìn)行運(yùn)算之前,所有char型和short型數(shù)據(jù)都轉(zhuǎn)換成int型,所有float型數(shù)據(jù)都轉(zhuǎn)換成double型,從而可以提高運(yùn)算精度。 在賦值語句中,賦值號右邊表達(dá)式的值的類型要轉(zhuǎn)換成賦值號左邊變量的類型。例如:int i=10;float pi=3.14;double f;f=i*pi; 例2-2 分析下面程序輸出的結(jié)果。/* Basic conversions in C

19、 */main( ) int a,b=550; char c=7; float f1=3.142,f2; a=b/c; /* integer divided by a character */ printf(a=%dn,a); a=f1; /* float to integer conversion */ printf(f1=%fa=%dn,f1,a); f1=b; /* integer to float conversion */ printf(b=%df1=%fnb,f1); f2=b/50.0;/* integer divided by a float */ printf(b=%d,f2

20、=%fn,b,f2); return(0); 輸出結(jié)果是:a=10f1=3.142000a=3b=550f1=550.000000b=550,f2=11.000000 C語言中除上述隱式類型轉(zhuǎn)換外,還有顯式類型轉(zhuǎn)換,這就是利用類型強(qiáng)制轉(zhuǎn)換運(yùn)算符“(類型名)表達(dá)式”形式中的一對圓括號,強(qiáng)行把其后表達(dá)式的類型轉(zhuǎn)換成圓括號中給定的類型。 (1)printf( )函數(shù) printf( )函數(shù)的功能是按指定的輸出格式把相應(yīng)的參數(shù)值在標(biāo)準(zhǔn)輸出設(shè)備(通常是終端)上顯示出來。2.5 printf和scanf函數(shù)的一般使用 printf( )的一般使用格式是:printf(格式控制串,參數(shù)1,參數(shù)2,); 例如:printf(The value = %d * * * %dn,a,b);轉(zhuǎn) 換 說 明輸 出 形 式應(yīng) 用 例 子輸 出 示 例%d十進(jìn)制int型printf(sum=%d n,sum);sum=2008%f十進(jìn)制double型printf(a=%f n,

溫馨提示

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

評論

0/150

提交評論