




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2章基本數(shù)據(jù)類型字符集及詞法約定2.1常量2.2簡單變量2.3基本數(shù)據(jù)類型及其轉換
2.4printf和scanf函數(shù)的一般使用2.5第2章基本數(shù)據(jù)類型字符集及詞法約定2.1常量2.1本章介紹有關數(shù)據(jù)類型的最基本的內(nèi)容,包括表示方式、取值范圍及一般轉換規(guī)則等。另外也簡要介紹常用庫函數(shù)printf()和scanf()的一般使用格式。本章介紹有關數(shù)據(jù)類型的最基本的內(nèi)容,包括表示22.1字符集及詞法約定2.1.1字符集(1)數(shù)字:我們平常使用的10個十進制數(shù)字:0,1,…,9。(2)字母:大、小寫英文字母各26個:A,B,…,Z和a,b,…,z。大、小寫字母是有區(qū)別的,表示不同的字符。2.1字符集及詞法約定2.1.1字符集3(3)圖形符號:29個圖形(可見)字符,即:!"#%&'()*+,?·/;:<=>?[\]^_{|}~(4)轉義序列。表2-1列出了C語言源程序中常用到的一些轉義序列及其含義。(3)圖形符號:29個圖形(可見)字符,即:4字符名表示形式含義備注換行\(zhòng)n把打?。@示)位置移到下一行的起始位置水平制表\t把打印位置移到當前行的下一個制表點(通常是右移8個字符的間隔)與實現(xiàn)有關表2-1 轉義序列及其含義字符名表示形式含義備注換行\(zhòng)n把打印5字符名表示形式含義備注垂直制表\v把打印位置移到下一行制表點起始位置與實現(xiàn)有關退格\b把打印位置在當前行上向后退一個字符位置與實現(xiàn)有關回車\r把打印位置移到當前行的起始位置換頁\f把打印位置移到下一個邏輯頁開頭的起始位置報警\a產(chǎn)生可聽或可見的報警,位置不變與實現(xiàn)有關問號\?打印問號單引號\'打印單引號雙引號\"打印雙引號反斜線\\打印一個反斜線續(xù)表字符名表示形式含義備注垂直制表\v把6(1)標識符在C語言中,用來標記常量、變量、數(shù)據(jù)類型、函數(shù)及程序的名字。必須符合下列語法規(guī)則:①應以字母(大小寫皆可)或下線符(_)中任一個字符開頭。2.1.2詞法約定(1)標識符2.1.2詞法約定7②在第一個字母后,可以是任意字母、下線符和數(shù)字組成的字符序列,此序列可為空串。根據(jù)以上規(guī)則,下列字符序列是合法的標識符:NAME1 name1Total_5Paper_i3_out②在第一個字母后,可以是任意字母、下線符和數(shù)字組成的字符序8而以下字符序列不是合法的標識符:NAME1 中間留有空格,它不是字母數(shù)字串name$2 中間有$,此為非字母、數(shù)字字符5t 開頭的是數(shù)字,而不是字母$4 開頭的是一般字符,不是字母而以下字符序列不是合法的標識符:9程序中的標識符必須選擇恰當。在選擇標識符時,要盡量避免使用容易混淆的字符。C語言區(qū)分大、小寫字母,所以name1、Name1和NAME1可在同一程序中使用,各代表不同的變量。標識符的最大長度還受實現(xiàn)的限制。程序中的標識符必須選擇恰當。10(2)關鍵字在有些語言中關鍵字又稱作保留字。它是具有特定含義、專門用作語言的特定成分的一類標識符。不能當作一般標識符使用。表2-2列出C語言的全部關鍵字及其用途。(2)關鍵字11關鍵字類型用途char數(shù)據(jù)類型字符量int整型量long長整型量short短整型量float單精度浮點量double雙精度浮點量unsigned無符號量(最高位不作符號位)signed有符號量struct結構型量union聯(lián)合型量enum枚舉型量void無值量const常量volatile易變量auto存儲類自動量extern外部量static靜態(tài)量register寄存器量typedef類型命名表2-2 關鍵字及其用途關鍵字類型用途char數(shù)據(jù)類型字符量12關鍵字類型用途if流程控制條件語句else條件語句的另一種選擇forfor循環(huán)語句whilewhile和do-while循環(huán)語句dodo-while語句break間斷語句continue接續(xù)語句goto跳轉語句return返回語句switch多路選擇語句default多路選擇語句中的默認情況case多路選擇語句中的情況選擇sizeof運算符計算字節(jié)數(shù)續(xù)表關鍵字類型用途if流程控制條件語句e13(3)標點符號C語言中標點符號是表示語法的符號,共有13個,即:[](){}*,:=;…#(3)標點符號14程序中往往要用到一些預先給定值的量,并且在程序執(zhí)行過程中其值不再發(fā)生變化。這類數(shù)據(jù)一般稱為常量。2.2常量程序中往往要用到一些預先給定值的量,并且在程15C語言中有不同類型的常量,如整型常量、浮點常量、字符常量和字符串常量。常量在C語言中出現(xiàn)的形式一般有兩種:一種是在程序中直接使用給定的值,2和3.1415926都是固定不變的量,而且直接以值的形式出現(xiàn)。這種形式的常量往往稱為字面量。C語言中有不同類型的常量,如整型常量、浮點常16另一種形式是采用宏定義形式,例如:#definePI3.1415926經(jīng)過宏定義之后,就用標識符來代表字面量,這種形式的常量通常稱為符號常量。符號常量的名字往往用大寫字母,不能把符號常量名當作變量使用。另一種形式是采用宏定義形式,例如:#def17在C語言中,整常量分為十進制整常量、八進制整常量和十六進制整常量。普通整常量在機器中占一個字長。1.十進制整常量十進制整常量是帶正負號的整數(shù)。如12,2008,10001,?39。2.2.1整型常量在C語言中,整常量分為十進制整常量、八進制整18八進制整常量是以數(shù)字0開頭的八進制數(shù)字串,其中只能出現(xiàn)數(shù)字0~7。通常,它是無符號數(shù)(即沒有正負號的數(shù))。2.八進制整常量八進制整常量是以數(shù)字0開頭的八進制數(shù)字串,其19十六進制整常量是以0x或0X開頭的十六進制數(shù)字串,可用的數(shù)字有0~9,a~f或A~F。3.十六進制整常量十六進制整常量是以0x或0X開頭的十六進制數(shù)20(1)無符號型后綴無符號型后綴用小寫字母u或者大寫字母U表示(unsignedint)。例如,986u,07654u,0XFEDu等都是無符號整常量。4.整常量的后綴(1)無符號型后綴4.整常量的后綴21(2)長型后綴長型后綴用小寫字母l或大寫字母L表示(longint)。例如:62l,0123L,0x327l等。如果一個整常量后面同時帶有后綴l(L)和u(U),那么,它的類型就是unsignedlongint(無符號長整型)。例如:9999lu,077777LU等。(2)長型后綴22它有以下兩種表示形式。(1)十進制數(shù)形式例如:3.14,0.618,.618,10.0,123.等都是合法的浮點常量。在這種形式中,一個浮點常量是由數(shù)字和小數(shù)點組成。必須有小數(shù)點,并且小數(shù)點的前面或者后面必須有數(shù)字。2.2.2浮點常量它有以下兩種表示形式。2.2.2浮點常量23(2)指數(shù)形式例如:2.98e6(或2.98E6),3.0e8(或3.0E8),6.E?5,6e?5,.123E+4等都是合法的浮點常量。在這種形式中,必須帶有階碼標志e(或E),并且e之前必須有數(shù)字,e之后的指數(shù)必須是整數(shù)。(2)指數(shù)形式24如果浮點常量不帶后綴,那么它的類型就是雙精度型(double)。若在浮點常量后面帶有后綴——字母F或f,那么它的類型就是單精度浮點型(float),通常簡稱為浮點型。在浮點常量后面還可帶有后綴——字母l或L,此時,它的類型就是長雙精度型(longdouble)。在一般系統(tǒng)中,單精度浮點數(shù)占用4個字節(jié)(32位)的存儲單元,而雙精度浮點數(shù)占用8個字節(jié)。如果浮點常量不帶后綴,那么它的類型就是雙精度25在C語言中,字符常量是用單引號括起來的一個字符或字符序列,如'x'、'AB'、'9'、'*'等。除以上形式外,構成字符常量的字符還可以是轉義序列。在C語言中轉義序列有三種:簡單轉義序列、八進制轉義序列和十六進制轉義序列。2.2.3字符常量在C語言中,字符常量是用單引號括起來的一個字26(1)簡單轉義序列\(zhòng)'\"\?\\\a\b\f\n\r\t\v雖然在形式上它們是由兩個字符構成的,卻只代表一個字符。(2)八進制轉義序列它是由反斜線\和后隨的一個、兩個或三個八進制數(shù)字構成的,如:\014、\75、\6等。(1)簡單轉義序列27(3)十六進制轉義序列它是由反斜線\、字母x和后隨的一個、兩個或三個十六進制數(shù)字構成,如:\x9、\x1A、\x123等。上述八進制轉義序列和十六進制轉義序列在構成形式上雖然出現(xiàn)多個字符,但在相應的字符常量或字符串常量中卻只代表一個字符。如\014、\xB9等都分別是一個字符的含義。(3)十六進制轉義序列28字符常量的類型是int。它的值就是該字符在相應字符集中的編碼值。字符常量可像其他整數(shù)一樣參與數(shù)值運算。字符常量的類型是int。29在C語言中,用'\0'表示空字符NUL,在機器中存放時它所占字節(jié)的各位都是0,因而它的值也是0。要注意,空字符不是空白字符。還應注意'\0'與'0'的區(qū)別??兆址S脕順俗R一個字符串的結尾。在C語言中,用'\0'表示空字符NUL,在機30它是用一對雙引號括起來的零個或多個字符組成的序列,如:"Hello!""Thisisacharacterstring""1234567890"""(在雙引號中沒有任何字符)字符串常量也可以看成是一個數(shù)組,這個數(shù)組的元素為一個一個的字符。2.2.4字符串常量它是用一對雙引號括起來的零個或多個字符組成的31編譯程序在編譯源文件時會自動在每個字符串末尾放上空字符“\0”,作為字符串的結尾,這種方式也表明:在C程序中,對字符串的長度不加限制。一個字符串究竟有多長,要到達結尾字符“\0”時才能確定。編譯程序在編譯源文件時會自動在每個字符串末尾32每個字符串所需要的實際空間要比用戶給出的字符數(shù)多一個字節(jié)。'x'就不同于"x"。前者是單獨一個字符,而后者是一個字符串,它包含了兩個字符:字母“x”和一個空字符“\0”。每個字符串所需要的實際空間要比用戶給出的字符33變量是在程序執(zhí)行過程中其值可以改變的量。在程序中使用一個變量之前,先要對它進行定義:為它指定一個名稱(變量名),指明它是什么類型的變量等。變量名應是合法的標識符。inti;intj;intk;2.3簡單變量變量是在程序執(zhí)行過程中其值可以改變的量。2.34同時對幾個有相同類型的變量進行定義,也可以簡寫在一行中,如:inti,j,k;注意,int與i之間有空格,各變量名之間要用逗號隔開,最后一個變量名后面要用分號結尾。同時對幾個有相同類型的變量進行定義,也可以簡35在C語言中定義變量的一般形式是:數(shù)據(jù)類型變量名;或者數(shù)據(jù)類型變量名1,變量名2,……;在C語言中定義變量的一般形式是:36定義變量時,還應注意以下幾點。①不同類型的變量應在各自數(shù)據(jù)說明行上定義,不要把它們統(tǒng)統(tǒng)寫在一行上,以增加程序的可讀性。定義變量時,還應注意以下幾點。37②在程序的同一部分,不允許對同一標識符做重復定義。例如:1 main()2 {3 inta,b,sum;4 floatprice,sum;5 chara,flag;
}
②在程序的同一部分,不允許對同一標識符做重復定義。例如:38③數(shù)據(jù)說明語句是以分號結尾,而同一說明語句中各個變量名之間以逗號隔開。例如:inti,j,k;③數(shù)據(jù)說明語句是以分號結尾,而同一說明語句中各個變量名之間392.4基本數(shù)據(jù)類型及其轉換C語言數(shù)據(jù)類型基本類型字符型整型浮點型雙精度型表2-3 C語言數(shù)據(jù)類型
2.4基本數(shù)據(jù)類型及其轉換C語言數(shù)據(jù)類型基本類型字符型整40C語言數(shù)據(jù)類型枚舉類型枚舉型無值型導出類型數(shù)組結構聯(lián)合函數(shù)指針型續(xù)表C語言數(shù)據(jù)類型枚舉類型枚舉型無值型導出類型數(shù)組結構聯(lián)合函數(shù)指412.4.1整型int及其相關類型在C語言中,表示整型量的關鍵字是int,所以一個整型變量i的說明形式為:inti;在目前大多數(shù)實現(xiàn)中,整型變量的取值范圍因機器字長而異。在字長為16位的機器上,整型變量i的取值范圍是:?32768≤i≤327672.4.1整型int及其相關類型在C語42對它們可以施行如下算術運算:+(加)?(減)﹡(乘)/(除)%(取模)整數(shù)還可使用下述運算符進行關系運算:>>===<=<!=對它們可以施行如下算術運算:43C語言中與int有關的類型還有:(1)短整型shortint,簡寫為short。(2)長整型longint,簡寫為long。(3)無符號整數(shù)unsignedint,簡寫為unsigned。C語言中與int有關的類型還有:44表示字符型變量的關鍵字是char。charc;一個字符型變量所占用的內(nèi)存空間應足以存放所用基本字符集中任何一個字符,通常占用一個字節(jié),即8位。2.4.2字符型char及其相關類型表示字符型變量的關鍵字是char。2.4.245在ANSIC和ISOC中,還規(guī)定了signedchar和unsignedchar兩種類型,unsignedchar型量的取值范圍是0~255,而signedchar型量的取值范圍是?127~127。在ANSIC和ISOC中,還規(guī)定了sign46當把一個字符常量賦給一個字符變量時,該字符變量的值就是相應字符的編碼值。在C語言中字符數(shù)據(jù)往往可以像整型數(shù)據(jù)那樣進行有關運算。當把一個字符常量賦給一個字符變量時,該字符變47例2-1在ASCII字符集中,字母A的序號為65,分析以下程序的輸出結果。#include<stdio.h>main(){charx,y;x='A'+10;y='Z'?20;printf("%c=%d,%c=%d\n",x,x,y,y);return(0);}例2-1在ASCII字符集中,字母A的序48字符數(shù)據(jù)可以以字符形式輸出,也可以用整數(shù)形式輸出。字符數(shù)據(jù)可以以字符形式輸出,也可以用整數(shù)形式49表示基本浮點類型的關鍵字是float。floatf;C語言中還提供其他兩種浮點類型:double和longdouble,分別稱作雙精度類型和長雙精度類型。float量的取值范圍是double量的子集,而double量的取值范圍又是longdouble量的子集。2.4.3浮點型float表示基本浮點類型的關鍵字是float。2.450一般機器上float量占4個字節(jié)(32位),double量占8個字節(jié)(64位),而longdouble量要占16個字節(jié)(128位)。浮點變量可進行的算術運算有下述4種:+?*/一般機器上float量占4個字節(jié)(32位)51其運算結果仍是一個浮點量。但大家應注意,取模運算符“%”不能作用于浮點量上。為了保持運算精度,在運算時所有的float量都被轉換成double量。其運算結果仍是一個浮點量。但大家應注意,取模52inti=10;floatpi=3.14;doublef;f=i*pi;2.4.4類型轉換inti=10;2.4.4類型轉換53不同類型的量在一起進行算術運算時需進行類型轉換。即:如果一個運算符有兩個不同類型的運算分量,那么,在操作之前先將“較低”的類型提升為“較高”的類型,使二者類型統(tǒng)一,然后進行操作;其結果是“較高”類型。而類型的高低是由其屬性(取值范圍、精度、作用等)來決定的。不同類型的量在一起進行算術運算時需進行類型轉54由算術運算符對運算分量自動實施的類型轉換稱為普通算術轉換,也稱為隱式轉換。由算術運算符對運算分量自動實施的類型轉換稱為55圖2-1算術轉換規(guī)則圖2-1算術轉換規(guī)則56在進行運算之前,所有char型和short型數(shù)據(jù)都轉換成int型,所有float型數(shù)據(jù)都轉換成double型,從而可以提高運算精度。在賦值語句中,賦值號右邊表達式的值的類型要轉換成賦值號左邊變量的類型。在進行運算之前,所有char型和short型57例如:inti=10;floatpi=3.14;doublef;f=i*pi;例如:58例2-2分析下面程序輸出的結果。/*BasicconversionsinC*/main(){inta,b=?550;charc='7';floatf1=3.142,f2;a=b/c;/*integerdividedbyacharacter*/printf("a=%d\n",a);例2-2分析下面程序輸出的結果。59a=f1;/*floattointegerconversion*/printf("f1=%f……a=%d\n",f1,a);f1=b;/*integertofloatconversion*/printf("b=%d……f1=%f\n"b,f1);f2=b/50.0;/*integerdividedbyafloat*/printf("b=%d,f2=%f\n",b,f2);return(0);}a=f1;/*floattointegercon60輸出結果是:a=?10f1=3.142000……a=3b=?550……f1=?550.000000b=?550,f2=?11.000000輸出結果是:61C語言中除上述隱式類型轉換外,還有顯式類型轉換,這就是利用類型強制轉換運算符“(類型名)表達式”形式中的一對圓括號,強行把其后表達式的類型轉換成圓括號中給定的類型。C語言中除上述隱式類型轉換外,還有顯式類型轉62(1)printf()函數(shù)printf()函數(shù)的功能是按指定的輸出格式把相應的參數(shù)值在標準輸出設備(通常是終端)上顯示出來。2.5printf和scanf函數(shù)的一般使用(1)printf()函數(shù)2.5printf和scan63printf()的一般使用格式是:printf(格式控制串,參數(shù)1,參數(shù)2,…);例如:printf("Thevalue=%d***%d\n",a,b);printf()的一般使用格式是:64轉換說明輸出形式應用例子輸出示例%d十進制int型printf("sum=%d\n",sum);sum=2008%f十進制double型printf("a=%f\n",a);a=6.280000%c單個字符printf(“Itis%c\n",c);ItisM%s字符串printf("**%s**\n",s);**Hello!**%o無符號八進制數(shù)printf("Oct=%o\n",oct);Oct=176%x無符號十六進制數(shù)printf("Hex=%x\n",hex);Hex=96AF%%%本身printf("a%%b=%d\n",d);a%b=5表2-6 printf()中常用的轉換說明及其作用轉換說明輸出形式應用例子輸出示例%d65(2)scanf()函數(shù)scanf()函數(shù)的功能是接受用戶從鍵盤上輸入的數(shù)據(jù),按照格式控制符的要求進行類型轉換,然后送到由對應參數(shù)指示的變量單元中去。(2)scanf()函數(shù)66scanf()的一般使用格式是:scanf(格式控制串,參數(shù)1,參數(shù)2,…);例如:scanf("%d%f",&a,&r);scanf()的一般使用格式是:67轉換說明輸入形式應用例子輸入示例%d匹配可帶符號的十進制整數(shù)scanf("%d",&a);輸入100,則a為100%f匹配可帶符號的浮點數(shù)scanf("%f",&f);輸入3.14,則a為3.140000%c匹配一個(默認)字符scanf("%c",&c);輸入A,則c為'A'%s匹配非空白字符序列scanf("%s",line);輸入string,則數(shù)組line中放置string,末尾自動加上空字符%o匹配可帶符號的八進制整數(shù)scanf("%o",&u);輸入754,則u的值為八進制754%x匹配可帶符號的十六進制整數(shù)scanf("%x",&x);輸入123,則x值為十六進制123表2-7 scanf()中常用的轉換說明及其作用轉換說明輸入形式應用例子輸入示例68第2章基本數(shù)據(jù)類型字符集及詞法約定2.1常量2.2簡單變量2.3基本數(shù)據(jù)類型及其轉換
2.4printf和scanf函數(shù)的一般使用2.5第2章基本數(shù)據(jù)類型字符集及詞法約定2.1常量2.69本章介紹有關數(shù)據(jù)類型的最基本的內(nèi)容,包括表示方式、取值范圍及一般轉換規(guī)則等。另外也簡要介紹常用庫函數(shù)printf()和scanf()的一般使用格式。本章介紹有關數(shù)據(jù)類型的最基本的內(nèi)容,包括表示702.1字符集及詞法約定2.1.1字符集(1)數(shù)字:我們平常使用的10個十進制數(shù)字:0,1,…,9。(2)字母:大、小寫英文字母各26個:A,B,…,Z和a,b,…,z。大、小寫字母是有區(qū)別的,表示不同的字符。2.1字符集及詞法約定2.1.1字符集71(3)圖形符號:29個圖形(可見)字符,即:!"#%&'()*+,?·/;:<=>?[\]^_{|}~(4)轉義序列。表2-1列出了C語言源程序中常用到的一些轉義序列及其含義。(3)圖形符號:29個圖形(可見)字符,即:72字符名表示形式含義備注換行\(zhòng)n把打?。@示)位置移到下一行的起始位置水平制表\t把打印位置移到當前行的下一個制表點(通常是右移8個字符的間隔)與實現(xiàn)有關表2-1 轉義序列及其含義字符名表示形式含義備注換行\(zhòng)n把打印73字符名表示形式含義備注垂直制表\v把打印位置移到下一行制表點起始位置與實現(xiàn)有關退格\b把打印位置在當前行上向后退一個字符位置與實現(xiàn)有關回車\r把打印位置移到當前行的起始位置換頁\f把打印位置移到下一個邏輯頁開頭的起始位置報警\a產(chǎn)生可聽或可見的報警,位置不變與實現(xiàn)有關問號\?打印問號單引號\'打印單引號雙引號\"打印雙引號反斜線\\打印一個反斜線續(xù)表字符名表示形式含義備注垂直制表\v把74(1)標識符在C語言中,用來標記常量、變量、數(shù)據(jù)類型、函數(shù)及程序的名字。必須符合下列語法規(guī)則:①應以字母(大小寫皆可)或下線符(_)中任一個字符開頭。2.1.2詞法約定(1)標識符2.1.2詞法約定75②在第一個字母后,可以是任意字母、下線符和數(shù)字組成的字符序列,此序列可為空串。根據(jù)以上規(guī)則,下列字符序列是合法的標識符:NAME1 name1Total_5Paper_i3_out②在第一個字母后,可以是任意字母、下線符和數(shù)字組成的字符序76而以下字符序列不是合法的標識符:NAME1 中間留有空格,它不是字母數(shù)字串name$2 中間有$,此為非字母、數(shù)字字符5t 開頭的是數(shù)字,而不是字母$4 開頭的是一般字符,不是字母而以下字符序列不是合法的標識符:77程序中的標識符必須選擇恰當。在選擇標識符時,要盡量避免使用容易混淆的字符。C語言區(qū)分大、小寫字母,所以name1、Name1和NAME1可在同一程序中使用,各代表不同的變量。標識符的最大長度還受實現(xiàn)的限制。程序中的標識符必須選擇恰當。78(2)關鍵字在有些語言中關鍵字又稱作保留字。它是具有特定含義、專門用作語言的特定成分的一類標識符。不能當作一般標識符使用。表2-2列出C語言的全部關鍵字及其用途。(2)關鍵字79關鍵字類型用途char數(shù)據(jù)類型字符量int整型量long長整型量short短整型量float單精度浮點量double雙精度浮點量unsigned無符號量(最高位不作符號位)signed有符號量struct結構型量union聯(lián)合型量enum枚舉型量void無值量const常量volatile易變量auto存儲類自動量extern外部量static靜態(tài)量register寄存器量typedef類型命名表2-2 關鍵字及其用途關鍵字類型用途char數(shù)據(jù)類型字符量80關鍵字類型用途if流程控制條件語句else條件語句的另一種選擇forfor循環(huán)語句whilewhile和do-while循環(huán)語句dodo-while語句break間斷語句continue接續(xù)語句goto跳轉語句return返回語句switch多路選擇語句default多路選擇語句中的默認情況case多路選擇語句中的情況選擇sizeof運算符計算字節(jié)數(shù)續(xù)表關鍵字類型用途if流程控制條件語句e81(3)標點符號C語言中標點符號是表示語法的符號,共有13個,即:[](){}*,:=;…#(3)標點符號82程序中往往要用到一些預先給定值的量,并且在程序執(zhí)行過程中其值不再發(fā)生變化。這類數(shù)據(jù)一般稱為常量。2.2常量程序中往往要用到一些預先給定值的量,并且在程83C語言中有不同類型的常量,如整型常量、浮點常量、字符常量和字符串常量。常量在C語言中出現(xiàn)的形式一般有兩種:一種是在程序中直接使用給定的值,2和3.1415926都是固定不變的量,而且直接以值的形式出現(xiàn)。這種形式的常量往往稱為字面量。C語言中有不同類型的常量,如整型常量、浮點常84另一種形式是采用宏定義形式,例如:#definePI3.1415926經(jīng)過宏定義之后,就用標識符來代表字面量,這種形式的常量通常稱為符號常量。符號常量的名字往往用大寫字母,不能把符號常量名當作變量使用。另一種形式是采用宏定義形式,例如:#def85在C語言中,整常量分為十進制整常量、八進制整常量和十六進制整常量。普通整常量在機器中占一個字長。1.十進制整常量十進制整常量是帶正負號的整數(shù)。如12,2008,10001,?39。2.2.1整型常量在C語言中,整常量分為十進制整常量、八進制整86八進制整常量是以數(shù)字0開頭的八進制數(shù)字串,其中只能出現(xiàn)數(shù)字0~7。通常,它是無符號數(shù)(即沒有正負號的數(shù))。2.八進制整常量八進制整常量是以數(shù)字0開頭的八進制數(shù)字串,其87十六進制整常量是以0x或0X開頭的十六進制數(shù)字串,可用的數(shù)字有0~9,a~f或A~F。3.十六進制整常量十六進制整常量是以0x或0X開頭的十六進制數(shù)88(1)無符號型后綴無符號型后綴用小寫字母u或者大寫字母U表示(unsignedint)。例如,986u,07654u,0XFEDu等都是無符號整常量。4.整常量的后綴(1)無符號型后綴4.整常量的后綴89(2)長型后綴長型后綴用小寫字母l或大寫字母L表示(longint)。例如:62l,0123L,0x327l等。如果一個整常量后面同時帶有后綴l(L)和u(U),那么,它的類型就是unsignedlongint(無符號長整型)。例如:9999lu,077777LU等。(2)長型后綴90它有以下兩種表示形式。(1)十進制數(shù)形式例如:3.14,0.618,.618,10.0,123.等都是合法的浮點常量。在這種形式中,一個浮點常量是由數(shù)字和小數(shù)點組成。必須有小數(shù)點,并且小數(shù)點的前面或者后面必須有數(shù)字。2.2.2浮點常量它有以下兩種表示形式。2.2.2浮點常量91(2)指數(shù)形式例如:2.98e6(或2.98E6),3.0e8(或3.0E8),6.E?5,6e?5,.123E+4等都是合法的浮點常量。在這種形式中,必須帶有階碼標志e(或E),并且e之前必須有數(shù)字,e之后的指數(shù)必須是整數(shù)。(2)指數(shù)形式92如果浮點常量不帶后綴,那么它的類型就是雙精度型(double)。若在浮點常量后面帶有后綴——字母F或f,那么它的類型就是單精度浮點型(float),通常簡稱為浮點型。在浮點常量后面還可帶有后綴——字母l或L,此時,它的類型就是長雙精度型(longdouble)。在一般系統(tǒng)中,單精度浮點數(shù)占用4個字節(jié)(32位)的存儲單元,而雙精度浮點數(shù)占用8個字節(jié)。如果浮點常量不帶后綴,那么它的類型就是雙精度93在C語言中,字符常量是用單引號括起來的一個字符或字符序列,如'x'、'AB'、'9'、'*'等。除以上形式外,構成字符常量的字符還可以是轉義序列。在C語言中轉義序列有三種:簡單轉義序列、八進制轉義序列和十六進制轉義序列。2.2.3字符常量在C語言中,字符常量是用單引號括起來的一個字94(1)簡單轉義序列\(zhòng)'\"\?\\\a\b\f\n\r\t\v雖然在形式上它們是由兩個字符構成的,卻只代表一個字符。(2)八進制轉義序列它是由反斜線\和后隨的一個、兩個或三個八進制數(shù)字構成的,如:\014、\75、\6等。(1)簡單轉義序列95(3)十六進制轉義序列它是由反斜線\、字母x和后隨的一個、兩個或三個十六進制數(shù)字構成,如:\x9、\x1A、\x123等。上述八進制轉義序列和十六進制轉義序列在構成形式上雖然出現(xiàn)多個字符,但在相應的字符常量或字符串常量中卻只代表一個字符。如\014、\xB9等都分別是一個字符的含義。(3)十六進制轉義序列96字符常量的類型是int。它的值就是該字符在相應字符集中的編碼值。字符常量可像其他整數(shù)一樣參與數(shù)值運算。字符常量的類型是int。97在C語言中,用'\0'表示空字符NUL,在機器中存放時它所占字節(jié)的各位都是0,因而它的值也是0。要注意,空字符不是空白字符。還應注意'\0'與'0'的區(qū)別。空字符常用來標識一個字符串的結尾。在C語言中,用'\0'表示空字符NUL,在機98它是用一對雙引號括起來的零個或多個字符組成的序列,如:"Hello!""Thisisacharacterstring""1234567890"""(在雙引號中沒有任何字符)字符串常量也可以看成是一個數(shù)組,這個數(shù)組的元素為一個一個的字符。2.2.4字符串常量它是用一對雙引號括起來的零個或多個字符組成的99編譯程序在編譯源文件時會自動在每個字符串末尾放上空字符“\0”,作為字符串的結尾,這種方式也表明:在C程序中,對字符串的長度不加限制。一個字符串究竟有多長,要到達結尾字符“\0”時才能確定。編譯程序在編譯源文件時會自動在每個字符串末尾100每個字符串所需要的實際空間要比用戶給出的字符數(shù)多一個字節(jié)。'x'就不同于"x"。前者是單獨一個字符,而后者是一個字符串,它包含了兩個字符:字母“x”和一個空字符“\0”。每個字符串所需要的實際空間要比用戶給出的字符101變量是在程序執(zhí)行過程中其值可以改變的量。在程序中使用一個變量之前,先要對它進行定義:為它指定一個名稱(變量名),指明它是什么類型的變量等。變量名應是合法的標識符。inti;intj;intk;2.3簡單變量變量是在程序執(zhí)行過程中其值可以改變的量。2.102同時對幾個有相同類型的變量進行定義,也可以簡寫在一行中,如:inti,j,k;注意,int與i之間有空格,各變量名之間要用逗號隔開,最后一個變量名后面要用分號結尾。同時對幾個有相同類型的變量進行定義,也可以簡103在C語言中定義變量的一般形式是:數(shù)據(jù)類型變量名;或者數(shù)據(jù)類型變量名1,變量名2,……;在C語言中定義變量的一般形式是:104定義變量時,還應注意以下幾點。①不同類型的變量應在各自數(shù)據(jù)說明行上定義,不要把它們統(tǒng)統(tǒng)寫在一行上,以增加程序的可讀性。定義變量時,還應注意以下幾點。105②在程序的同一部分,不允許對同一標識符做重復定義。例如:1 main()2 {3 inta,b,sum;4 floatprice,sum;5 chara,flag;
}
②在程序的同一部分,不允許對同一標識符做重復定義。例如:106③數(shù)據(jù)說明語句是以分號結尾,而同一說明語句中各個變量名之間以逗號隔開。例如:inti,j,k;③數(shù)據(jù)說明語句是以分號結尾,而同一說明語句中各個變量名之間1072.4基本數(shù)據(jù)類型及其轉換C語言數(shù)據(jù)類型基本類型字符型整型浮點型雙精度型表2-3 C語言數(shù)據(jù)類型
2.4基本數(shù)據(jù)類型及其轉換C語言數(shù)據(jù)類型基本類型字符型整108C語言數(shù)據(jù)類型枚舉類型枚舉型無值型導出類型數(shù)組結構聯(lián)合函數(shù)指針型續(xù)表C語言數(shù)據(jù)類型枚舉類型枚舉型無值型導出類型數(shù)組結構聯(lián)合函數(shù)指1092.4.1整型int及其相關類型在C語言中,表示整型量的關鍵字是int,所以一個整型變量i的說明形式為:inti;在目前大多數(shù)實現(xiàn)中,整型變量的取值范圍因機器字長而異。在字長為16位的機器上,整型變量i的取值范圍是:?32768≤i≤327672.4.1整型int及其相關類型在C語110對它們可以施行如下算術運算:+(加)?(減)﹡(乘)/(除)%(取模)整數(shù)還可使用下述運算符進行關系運算:>>===<=<!=對它們可以施行如下算術運算:111C語言中與int有關的類型還有:(1)短整型shortint,簡寫為short。(2)長整型longint,簡寫為long。(3)無符號整數(shù)unsignedint,簡寫為unsigned。C語言中與int有關的類型還有:112表示字符型變量的關鍵字是char。charc;一個字符型變量所占用的內(nèi)存空間應足以存放所用基本字符集中任何一個字符,通常占用一個字節(jié),即8位。2.4.2字符型char及其相關類型表示字符型變量的關鍵字是char。2.4.2113在ANSIC和ISOC中,還規(guī)定了signedchar和unsignedchar兩種類型,unsignedchar型量的取值范圍是0~255,而signedchar型量的取值范圍是?127~127。在ANSIC和ISOC中,還規(guī)定了sign114當把一個字符常量賦給一個字符變量時,該字符變量的值就是相應字符的編碼值。在C語言中字符數(shù)據(jù)往往可以像整型數(shù)據(jù)那樣進行有關運算。當把一個字符常量賦給一個字符變量時,該字符變115例2-1在ASCII字符集中,字母A的序號為65,分析以下程序的輸出結果。#include<stdio.h>main(){charx,y;x='A'+10;y='Z'?20;printf("%c=%d,%c=%d\n",x,x,y,y);return(0);}例2-1在ASCII字符集中,字母A的序116字符數(shù)據(jù)可以以字符形式輸出,也可以用整數(shù)形式輸出。字符數(shù)據(jù)可以以字符形式輸出,也可以用整數(shù)形式117表示基本浮點類型的關鍵字是float。floatf;C語言中還提供其他兩種浮點類型:double和longdouble,分別稱作雙精度類型和長雙精度類型。float量的取值范圍是double量的子集,而double量的取值范圍又是longdouble量的子集。2.4.3浮點型float表示基本浮點類型的關鍵字是float。2.4118一般機器上float量占4個字節(jié)(32位),double量占8個字節(jié)(64位),而longdouble量要占16個字節(jié)(128位)。浮點變量可進行的算術運算有下述4種:+?*/一般機器上float量占4個字節(jié)(32位)119其運算結果仍是一個浮點量。但大家應注意,取模運算符“%”不能作用于浮點量上。為了保持運算精度,在運算時所有的float量都被轉換成double量。其運算結果仍是一個浮點量。但大家應注意,取模120inti=10;floatpi=3.14;doublef;f=i*pi;2.4.4類型轉換inti=10;2.4.4類型轉換121不同類型的量在一起進行算術運算時需進行類型轉換。即:如果一個運算符有兩個不同類型的運算分量,那么,在操作之前先將“較低”的類型提升為“較高”的類型,使二者類型統(tǒng)一,然后進行操作;其結果是“較高”類型。而類型的高低是由其屬性(取值范圍、精度、作用等)來決定的。不同類型的量在一起進行算術運算時需進行類型轉122由算術運算符對運算分量自動實施的類型轉換稱為普通算術轉換,也稱為隱式轉換。由算術運算符對運算分量自動實施的類型轉換稱為123圖2-1算術轉換規(guī)則圖2-1算術轉換規(guī)則124在進行運算之前,所有char型和short型數(shù)據(jù)都轉換成int型,所有float型數(shù)據(jù)都轉換成double型,從而可以提高運算精度。在賦值語句中,賦值號右邊表達式的值的類型要轉換成賦值號左邊變量的類型。在進行運算之前,所有char型和short型125例如:inti=10;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智慧物流平臺股權投資合同協(xié)議
- 2025年度無社保派遣員工勞動合同
- 2025年度電子產(chǎn)品銷售兼職傭金結算合同
- 二零二五年度貓咪寵物美容學院加盟買賣協(xié)議
- 《物流系統(tǒng)分析》課件 6.3.1單節(jié)點選址模型1
- 高中家長會:家校攜手·共創(chuàng)明天課件-高一上學期家長會
- 常年聘請法律顧問的合同
- 2025年遼寧貨運從業(yè)資格證試題庫及答案
- 金秋助學發(fā)言稿
- 智能家居產(chǎn)品市場占有率表格
- 科普版小學英語六年級下冊全冊教案
- 腦梗合并心衰護理查房
- 婦聯(lián)普法知識競賽參考試題庫300題(含答案)
- T-NAHIEM 101-2023 急診科建設與設備配置標準
- 【綠色家園你我共建】約會春天擁抱綠色-2024年3月12日植樹節(jié)主題班會(小學通用版)
- 解分式方程50題八年級數(shù)學上冊
- 溶液鍍膜法完整版本
- 消化道出血應急預案
- 【溫州眼鏡出口遭遇技術貿(mào)易壁壘的現(xiàn)狀及對策(定量論文)15000字】
- AI技術在保險行業(yè)的應用
- 文華財經(jīng)“麥語言”函數(shù)手冊
評論
0/150
提交評論