![第2章 C語言的基本數(shù)據(jù)類型_第1頁](http://file4.renrendoc.com/view/31e7ee35c64db050dddb54839dcad292/31e7ee35c64db050dddb54839dcad2921.gif)
![第2章 C語言的基本數(shù)據(jù)類型_第2頁](http://file4.renrendoc.com/view/31e7ee35c64db050dddb54839dcad292/31e7ee35c64db050dddb54839dcad2922.gif)
![第2章 C語言的基本數(shù)據(jù)類型_第3頁](http://file4.renrendoc.com/view/31e7ee35c64db050dddb54839dcad292/31e7ee35c64db050dddb54839dcad2923.gif)
![第2章 C語言的基本數(shù)據(jù)類型_第4頁](http://file4.renrendoc.com/view/31e7ee35c64db050dddb54839dcad292/31e7ee35c64db050dddb54839dcad2924.gif)
![第2章 C語言的基本數(shù)據(jù)類型_第5頁](http://file4.renrendoc.com/view/31e7ee35c64db050dddb54839dcad292/31e7ee35c64db050dddb54839dcad2925.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章C語言的基本數(shù)據(jù)類型
數(shù)據(jù)是程序的基本組成元素,是被處理的對(duì)象,在程序中起到紐帶作用,它把C語言中的各個(gè)函數(shù)聯(lián)系起來,相互配合完成某些功能。因而熟練地掌握數(shù)據(jù)類型的特點(diǎn)、常量和變量的使用方法,是進(jìn)行程序編寫的基礎(chǔ)。本章將介紹C語言中的各種數(shù)據(jù)類型。通過本章的學(xué)習(xí),使讀者了解C語言常量與變量的含義,并掌握各種數(shù)據(jù)類型間的混合運(yùn)算。
C語言數(shù)據(jù)類型
常量與變量
整型數(shù)據(jù)
實(shí)型數(shù)據(jù)
字符型數(shù)據(jù)
各類數(shù)值類型間的混合運(yùn)算
2.1C語言數(shù)據(jù)類型
著名計(jì)算機(jī)科學(xué)家NikiklausWirth曾經(jīng)提出了一個(gè)非常著名的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序。可見在一個(gè)程序中必須存在以下兩點(diǎn):
(1)數(shù)據(jù)結(jié)構(gòu):是指程序中對(duì)數(shù)據(jù)的具體描述及數(shù)據(jù)的組織形式,它包括數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。不同的計(jì)算機(jī)語言所允許定義和使用的數(shù)據(jù)結(jié)構(gòu)是不同的,比如在C語言中提供的“結(jié)構(gòu)體”數(shù)據(jù)結(jié)構(gòu),而在FORTRAN語言中就不支持這種數(shù)據(jù)結(jié)構(gòu)。
W(2)算法:是指程序中具體的操作步驟,它處理的對(duì)象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式存在(如整數(shù)、實(shí)數(shù)、字符數(shù)等)于程序中,因而算法處理的對(duì)象實(shí)際上是各種不同的數(shù)據(jù)類型。
可以說算法是程序的靈魂,數(shù)據(jù)結(jié)構(gòu)是程序的加工對(duì)象,在處理同一類問題時(shí),如果數(shù)據(jù)結(jié)構(gòu)不同,算法也不同。因而在考慮算法時(shí),必須注意合理地選擇數(shù)據(jù)結(jié)構(gòu)。通常在處理復(fù)雜問題時(shí),應(yīng)當(dāng)綜合考慮數(shù)據(jù)結(jié)構(gòu)和算法,選擇最優(yōu)的數(shù)據(jù)結(jié)構(gòu)及算法。
在C語言中,數(shù)據(jù)結(jié)構(gòu)通常是以數(shù)據(jù)類型的形式出現(xiàn)的,具體數(shù)據(jù)類型如圖2.1.1所示。
圖2.1.1C語言中的數(shù)據(jù)類型2.2常量與變量
常量和變量是C語言中的兩種重要的數(shù)據(jù)組織形式。顧名思義,常量就是其值不能被改變的量;變量就是其值可以被任意改變的量。在C語言中,各類數(shù)據(jù)是計(jì)算機(jī)處理的主要對(duì)象,這些數(shù)據(jù)在計(jì)算機(jī)處理的過程中,就是以常量和變量的形式表達(dá)和存儲(chǔ)的。
2.2.1常量和符號(hào)常量
在C語言中,把在程序運(yùn)行過程中其值保持恒定不變的數(shù)據(jù)稱為常量。根據(jù)類型的不同可以將常量分為以下4種:
(1)整型常量:是以整數(shù)形式存在的常量,如21,0,-21等。
(2)實(shí)型常量:是以浮點(diǎn)形式存在的常量,如2.6,-3.7等。
(3)字符常量:是以字符形式存在的常量,如‘a(chǎn)’,‘f’,‘x’等。
(4)字符串常量:是以字符串形式存在的常量,如‘student’,‘for’,‘int’等。
常量不僅可以直接表示,也可以用一個(gè)標(biāo)識(shí)符來代替,這種用標(biāo)識(shí)符代表的常量稱為符號(hào)常量,該標(biāo)識(shí)符其實(shí)就是常量的別名。符號(hào)常量的一般格式如下:
#define標(biāo)識(shí)符字符串
例2.1編寫一個(gè)求圓面積的程序,要求輸入圓的半徑,輸出圓面積。
程序
#include<stdio.h>
#definePI3.14
main()
{
floatrad,area;
printf("Inputtheradiusoftheround:\n");
scanf("%f\n",&rad);
area=PI*rad*rad;
printf("Theareaoftheroundis");
printf("%f\n",area);
}
輸入
Inputtheradiusoftheround:
12.54↙
輸出
Theareaoftheroundis493.770020
#define表示宏定義命令,一般情況下符號(hào)常量名用大寫,變量名用小寫,以示區(qū)別,在程序中使用符號(hào)常量,具有以下優(yōu)點(diǎn):
(1)含義清楚。在定義符號(hào)常量時(shí),可以按“見名知意”的原則為符號(hào)常量命名,這樣在檢查程序時(shí)可以很方便地分清常量的含義。比如可以用PI代表圓周率,用area表示面積等。
(2)修改方便。如果需要修改常量值時(shí),只須在符號(hào)常量定義的位置修改即可,這樣其值在整個(gè)程序中都將發(fā)生改變。
在C語言中,系統(tǒng)提供了一個(gè)測試某一種類型數(shù)據(jù)所占存儲(chǔ)空間長度的運(yùn)算符“sizeof”,其格式如下:
sizeof(類型表示符)
例如:利用運(yùn)算符sizeof求整型int所占的內(nèi)存空間。
sizeof(int);
2.2.2變量
變量就是在程序的運(yùn)行過程中,其值可以根據(jù)需要經(jīng)常更新的數(shù)據(jù)。變量可分為整型變量、實(shí)型變量、字符變量等。每個(gè)變量都必須具備4個(gè)基本要素,即變量名、變量值、變量對(duì)應(yīng)的內(nèi)存空間和變量的數(shù)據(jù)類型。
1.變量名
為了區(qū)分不同的變量,每個(gè)變量必須具有自己的名稱,在對(duì)變量命名時(shí)應(yīng)該遵循以下3點(diǎn):
(1)變量名只能由字母、數(shù)字和下畫線3種字符組成。
(2)數(shù)字不能作為第1個(gè)字符。
(3)英文大寫字母和小寫字母是不同的字符。
下面是合法的標(biāo)識(shí)符和變量名:
num,day,mouth,year,max12,Student,_round等。
下面的則是不合法的標(biāo)識(shí)符和變量名:
M.D.jack,¥1982,#86,@sohu,a>b,deng-lei等。
注意:在C語言中,英文大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符,如num和NUM就是兩個(gè)不同的變量名。一般情況下,變量名用小寫字母表示,而符號(hào)常量名用大寫字母表示。
2.變量的定義
常量在使用前可以不用定義,但是變量在使用前必須先定義。定義變量的實(shí)質(zhì)就是在內(nèi)存中為變量分配一定大小的空間。定義變量的一般形式如下:
<類型名><變量名>
例如:
intnum1,num2; /*定義整型變量num1,num2*/
floatf1,f2; /*定義浮點(diǎn)型變量f1,f2*/
charc1,c2; /*定義字符型變量c1,c2*/
3.變量的用法
為變量賦值的過程稱為變量的初始化。一般情況下,變量初始化的方法有以下3種:
(1)定義變量的同時(shí)為其賦值。
例如:intnum=5;
(2)定義變量后再為其賦值。
例如:
floatpi;
pi=3.14; /*此處“=”表示賦值運(yùn)算符*/
(3)同時(shí)定義多個(gè)變量并分別為它們賦值。
例如:intnum1=12;num2=14;num3=16;
2.3整型數(shù)據(jù)
在C語言中,用于表達(dá)和處理整數(shù)的數(shù)據(jù)稱為整型數(shù)據(jù)。整型數(shù)據(jù)有整型常量和整型變量之分。
2.3.1整型常量
整型常量即整常量,在C語言中,整型常量可用以下3種形式表示:
(1)十進(jìn)制整數(shù):如1982,-86,0等。
(2)八進(jìn)制整數(shù):通常把以數(shù)字0開頭的數(shù)稱為八進(jìn)制數(shù),如0154,-0123等。
其中,(0154)8=1×82+5×81+4×80=(108)10
(-0123)8=-(1×82+2×81+3×80)=(-83)10
(3)十六進(jìn)制整數(shù):通常把以數(shù)字0x開頭的數(shù)稱為十六進(jìn)制數(shù),如0x154,-0x123等。
其中,
(0x154)16=1×162+5×161+4×160=(340)10
(-0x123)16=-(1×162+2×161+3×160)=(-291)10
例2.2整型常量3種形式的應(yīng)用。
程序
#include<stdio.h>
main()
{
intnum1,num2,num3;
num1=125;
num2=0125;
num3=0x125;
printf("Thealgorismnumbersare");
printf("%d,%d,%d\n",num1,num2,num3); /*以十進(jìn)制形式輸出*/
printf("Theoctavonumbersare");
printf("%o,%o,%o\n",num1,num2,num3); /*以八進(jìn)制形式輸出*/
printf("Thehexnumbersare");
printf("%x,%x,%x\n",num1,num2,num3); /*以十六進(jìn)制形式輸出*/
}
輸出
Thealgorismnumbersare125,85,293
Theoctavonumbersare175,125,445
Thehexnumbersare7d,55,125
分析
“%d”,“%o”,“%x”為格式轉(zhuǎn)換控制符,分別用于輸出十進(jìn)制、八進(jìn)制、十六進(jìn)制整數(shù)。
2.3.2整型變量及分類
整型變量是用來存儲(chǔ)整型數(shù)據(jù)的,數(shù)據(jù)在計(jì)算機(jī)內(nèi)部是以二進(jìn)制形式存放的,根據(jù)數(shù)據(jù)的表示范圍可以將整型變量分為3種。
1.有符號(hào)與無符號(hào)基本整型變量
有符號(hào)基本整型變量一般是以signedint表示的,或直接表示為int,通常用到的都是有符號(hào)基本整型變量;無符號(hào)基本整型變量一般是以u(píng)nsignedint表示的,或表示為unsigned,使用無符號(hào)整型變量是為了充分利用變量的表示范圍,節(jié)約內(nèi)存。無符號(hào)整型變量只能存放不帶符號(hào)的整數(shù),如123,456等,而不能存放負(fù)數(shù),如-123,-456等。
2.有符號(hào)與無符號(hào)長整型變量
有符號(hào)長整型變量一般以signedlongint表示,或直接用long表示;無符號(hào)長整型變量一般以u(píng)nsignedlongint表示,或直接用unsignedlong表示。
3.有符號(hào)與無符號(hào)短整型變量
有符號(hào)短整型變量一般以signedshortint表示,或直接用short表示;無符號(hào)長整型變量一般以u(píng)nsignedshortint表示,或直接用unsignedshort表示。ANSI標(biāo)準(zhǔn)定義了整數(shù)數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍,如表2.1所示。
其中,表中“[]”內(nèi)的部分表示可以省略,不影響變量在內(nèi)存中數(shù)的取值范圍,如[signed][long][int]與long是等價(jià)的。
數(shù)據(jù)類型字節(jié)長度數(shù)的取值范圍[signed]int2-32768~32767即-215~(215-1)unsigned[int]20~65535即0~(216-1)[signed]long[int]4-2147483648~2147483647即-231~(231-1)unsignedlong[int]40~4294967295即0~(232-1)[signed]short[int]2-32768~32767即-215~(215-1)unsignedshort[int]20~65535即0~(216-1)表2.1整型數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍例2.3整型數(shù)據(jù)溢出的應(yīng)用。
程序
#include<stdio.h>
main()
{
intnum1=32767,num2;
num2=num1+1;
printf("%d,%d\n",num1,num2);
}
輸出
32767,-32768
分析
有符號(hào)基本整型變量int的范圍是-32768~32767即215~(215-1),在上例中num1=32767,由于計(jì)算機(jī)只識(shí)別二進(jìn)制數(shù),因而將num1轉(zhuǎn)換成二進(jìn)制數(shù)。當(dāng)num1+1后,其結(jié)果超出了有符號(hào)基本整型變量的范圍,此情況稱為數(shù)據(jù)溢出,當(dāng)達(dá)到最大值后,就又從最小值開始計(jì)數(shù),因而當(dāng)32767加1后得不到32768,而得到有符號(hào)基本整型變量取值的最小值-32768,如圖2.3.1所示。
num1:327670111111111111111num2:-327681000000000000000圖2.3.1整型數(shù)據(jù)溢出2.4實(shí)型數(shù)據(jù)
在C語言中,用于表達(dá)和處理實(shí)數(shù)的數(shù)據(jù)稱為實(shí)型數(shù)據(jù)。實(shí)型數(shù)據(jù)有實(shí)型常量和實(shí)型變量之分。
2.4.1實(shí)型常量
實(shí)型常量即實(shí)數(shù),在C語言中又稱為浮點(diǎn)數(shù),實(shí)型常量可用以下兩種形式表示:
(1)普通形式:一般用小數(shù)表示,書寫時(shí)小數(shù)點(diǎn)不能省略。如3.14,.15,5.,0.0等,其中,0.0,0.和.0是等價(jià)的。
(2)指數(shù)形式:即科學(xué)計(jì)數(shù)法,在C語言中,指數(shù)的表示主要靠字母“e”或“E”來實(shí)現(xiàn),e或E跟一個(gè)整數(shù)表示以10為底數(shù)的冪。如3.14e-2表示3.14×10-2即0.0314,5.14E3表示5.14×103即5140。值得注意的是C語言中規(guī)定字母“e”或“E”的前后都必須有數(shù)字,并且后面的數(shù)字必須為整數(shù),如e5,e.,3.14e2.5等都是不合法的指數(shù)形式。
例2.4實(shí)型常量的應(yīng)用。
程序
#include<stdio.h>
main()
{
floatx,y;
x=3.14e4;
y=3.14E-4;
printf("x=%f\n",x);
printf("y=%f\n",y);
}
輸出
x=31400.000000
y=0.000314
2.4.2實(shí)型變量及分類
實(shí)型變量是用來存儲(chǔ)實(shí)數(shù)數(shù)據(jù)的,在C語言中,可將實(shí)型變量分為單精度實(shí)型變量、雙精度實(shí)型變量和長雙精度實(shí)型變量3種,實(shí)型數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍如表2.2所示。
表中的有效位表示數(shù)據(jù)在前幾位之內(nèi)是有效的,而其后的數(shù)字則是計(jì)算機(jī)的隨機(jī)數(shù)。如單精度float數(shù)123456.789只能保證前7位數(shù)字的準(zhǔn)確性。
表2.2實(shí)型數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍數(shù)據(jù)類型字節(jié)長度有效位數(shù)的取值范圍單精度float471e-38~1e+38雙精度double8151e-308~1e+308長雙精度longdouble16181e-4932~1e+4932例2.5實(shí)型變量的定義與應(yīng)用。
程序
#include<stdio.h>
main()
{
floatx;
doubley;
x=123456.789;
y=123456.789;
printf("x=%f\n",x);
printf("y=%f\n",y);
}
輸出
x=123456.789062
y=123456.789000
分析
從程序運(yùn)行結(jié)果可以看出,x的值并不等于賦予的初值,而y的值等于賦予的初值。這是由不同數(shù)據(jù)類型變量的有效數(shù)字不同產(chǎn)生的差異。因而在需要定義較大的數(shù)時(shí),應(yīng)選取雙精度double型,甚至選取長雙精度longdouble型,以確保數(shù)據(jù)的準(zhǔn)確性。
2.5字符型數(shù)據(jù)
在C語言中,用于表達(dá)和處理字符的數(shù)據(jù)稱為字符型數(shù)據(jù)。字符型數(shù)據(jù)有字符常量和字符變量之分。
2.5.1字符常量
字符型常量是一個(gè)用單撇號(hào)括起來的字符。如‘a(chǎn)’,‘A’,‘%’,‘@’等。在C語言中,除了以上形式的字符常量外,還允許某些特殊形式的字符常量存在,這些字符常量是一種“控制字符”,稱為轉(zhuǎn)義字符。在屏幕上不能顯示,只能產(chǎn)生相應(yīng)的功能操作,如轉(zhuǎn)義字符‘\n’表示換行。C語言中常用的轉(zhuǎn)義字符及其含義,如表2.3所示。
表2.3常用的轉(zhuǎn)義字符及其含義字符形式含義ASCII\n換行,從當(dāng)前位置移到下一行開頭10\b退格,從當(dāng)前位置移到前一列8\r回車,從當(dāng)前位置移到本行開頭13\t水平制表,從當(dāng)前位置移到下一個(gè)tab位置9\f換頁,從當(dāng)前位置移到下頁開頭12\\反斜杠字符“\”92\'單撇號(hào)字符“'”39\''雙撇號(hào)字符“''”34表中,“轉(zhuǎn)義字符”的含義是將反斜杠“\”后面的字符轉(zhuǎn)換成相應(yīng)的意思。如‘\n’中的“n”,并不表示字母n,而是作為“換行”符;‘\f’中的“f”不表示字母f,而是作為“換頁”符。除了表中的轉(zhuǎn)義字符外,在C語言中還可以用“\”加上1~3位八進(jìn)制數(shù)表示的ASCII碼來表示,如“\101”表示字母A;“\012”表示換行符。此外還可以用“\”加上1~2位十六進(jìn)制數(shù)來表示,如“x0c”表示換頁符;“x0d”表示回車符等。
例2.6轉(zhuǎn)義字符實(shí)例。
程序
#include<stdio.h>
main()
{
printf("\n");
printf("c\tprogram\n");
printf("c\t\bprogram\n");
}
輸出
cprogram
cprogram
分析
程序中第1個(gè)輸出語句是換行;第2個(gè)輸出語句是在第1列,先輸出字符“c”,然后跳到第9列輸出字符串“program”;第3個(gè)輸出語句是在第1列先輸出字符“c”,然后跳到第9列準(zhǔn)備輸出,遇到一個(gè)退格控制符“\b”,回到第8列輸出字符串“program”。
2.5.2字符變量及分類
字符變量是用來存儲(chǔ)字符常量的,在內(nèi)存中,一個(gè)字符占一個(gè)字節(jié)。在C語言中,可將字符變量分為有符號(hào)字符變量(char)和無符號(hào)字符變量(unsignedchar)。將一個(gè)字符常量存入字符變量中,實(shí)際是將該字符的ASCII碼存入存儲(chǔ)單元中,與整數(shù)的存儲(chǔ)形式類似,因此一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。字符數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍如表2.4所示。
表2.4字符數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍數(shù)據(jù)類型字節(jié)長度取值范圍char1-128~127unsignedchar1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水質(zhì)自動(dòng)在線監(jiān)測儀項(xiàng)目可行性研究報(bào)告
- 2025年全自動(dòng)即時(shí)豆?jié){機(jī)項(xiàng)目可行性研究報(bào)告
- 科技項(xiàng)目文檔從構(gòu)思到完成的實(shí)戰(zhàn)過程
- 現(xiàn)代信息技術(shù)在學(xué)校圖書館管理中的應(yīng)用
- 景點(diǎn)門票線上線下融合-深度研究
- 2025至2030年聚氨酯灌漿堵漏材料項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年中國鋼爪座市場調(diào)查研究報(bào)告
- 2025年中國異形孔噴絲板市場調(diào)查研究報(bào)告
- 律師執(zhí)業(yè)風(fēng)險(xiǎn)防范研究-深度研究
- 2025年高級(jí)中溫美紋紙膠帶項(xiàng)目可行性研究報(bào)告
- 《霍爾效應(yīng)測量磁場》課件
- 黑龍江省哈爾濱市2022-2023學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 《瘋狂動(dòng)物城》全本臺(tái)詞中英文對(duì)照
- 中專數(shù)學(xué)(基礎(chǔ)模塊)上冊(cè)課件
- 高考作文復(fù)習(xí)任務(wù)驅(qū)動(dòng)型作文的審題立意課件73張
- 品質(zhì)部經(jīng)理KRA KPI考核表
- 《馬克思主義與社會(huì)科學(xué)方法論》授課教案
- 一個(gè)28歲的漂亮小媳婦在某公司打工-被老板看上之后
- 馬工程教育哲學(xué)課件第十章 教育哲學(xué)與教師發(fā)展
- GB/T 11376-2020金屬及其他無機(jī)覆蓋層金屬的磷化膜
- 成功源于自律 主題班會(huì)課件(共34張ppt)
評(píng)論
0/150
提交評(píng)論