
整型數(shù)據(jù)即整數(shù),C語言中整型(int)數(shù)據(jù)類型可以使用下面4種修飾符的搭配來描述數(shù)據(jù)的長(zhǎng)度和取值范圍:
①signed(有符號(hào));
②unsigned(無符號(hào));
③long(長(zhǎng)型);
④short(短型);
int數(shù)據(jù)在VC++6.0環(huán)境中編譯占4個(gè)字節(jié),在TC2.0環(huán)境中編譯占2個(gè)字節(jié)。
表2-3所示ANSI C++標(biāo)準(zhǔn)中規(guī)定的整型數(shù)據(jù)的長(zhǎng)度和取值范圍。
表2-3 整型數(shù)據(jù)的取值范圍和長(zhǎng)度
在C語言中,對(duì)數(shù)據(jù)類型的說明允許使用一些簡(jiǎn)寫方式,如表2-4所示。
表2-4 整型數(shù)據(jù)的取值范圍和長(zhǎng)度
在C語言中整數(shù)可以采用十進(jìn)制、八進(jìn)制和十六進(jìn)制來表示。十進(jìn)制數(shù)沒有前綴,八進(jìn)制數(shù)以數(shù)字0開頭,十六進(jìn)制數(shù)前面用數(shù)字0和字母X開頭(0x或0X)。表2-5所示為整型常量的幾種表示方法。
表2-5 整型常量的幾種表示
表2-5中后綴“L”或“l”表示長(zhǎng)整型數(shù),后綴為“U”或“u”表示無符號(hào)整數(shù)。
整型變量的定義:
int a,b,c; // a,b,c為整型變量
long x,y; // x,y為長(zhǎng)整型變量
unsigned p,q; //p,q為無符號(hào)整型變量
【例2-3】整型變量的不同進(jìn)制表示法。
#include <stdio.h>
int main()
{
inta=0X80,b=0200,c=128,d=0X24ALu;
printf(“a的十進(jìn)制值為:%d\n”,a);
printf("b的十進(jìn)制值為:%d\n",b);
printf("c的八進(jìn)制值為:%o\n",c);
printf("c的十六進(jìn)制值為:%x\n",c);
printf(“d的十進(jìn)制值為:%d\n”,d);
return 0;
}
程序運(yùn)行結(jié)果:
b的十進(jìn)制值為:128
c的八進(jìn)制值為:200
c的十六進(jìn)制值為:80
d的十進(jìn)制值為:586
2.1.4實(shí)型數(shù)據(jù)
實(shí)型數(shù)據(jù)也稱為浮點(diǎn)數(shù)或?qū)崝?shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制,可采用浮點(diǎn)計(jì)數(shù)法和科學(xué)計(jì)數(shù)法兩種表示方法,例如:
5.789
2.1E5 (等于2.1*105)
0.5E7 (等于0.5*107)
-2.8E-9 (等于-2.8*10-9)
一般情況下,對(duì)太大或太小的數(shù),采用科學(xué)計(jì)數(shù)法,如上面的0.5E7、-2.8E-9。
【例2-6】輸出實(shí)數(shù)。
#include <stdio.h>
int main()
{
printf("356.24的浮點(diǎn)數(shù)表示:%6f\n",356.24);
printf("3.5624e2的浮點(diǎn)數(shù)表示:%6f\n",3.5624e2);
printf(“35624e-2的浮點(diǎn)數(shù)表示:%6f\n",35624e-2);
printf(“356.24的科學(xué)計(jì)數(shù)法表示:%E\n",356.24);
return 0;
}
程序運(yùn)行結(jié)果:
356.24的浮點(diǎn)數(shù)表示:356.240000
3.5624e2的浮點(diǎn)數(shù)表示:356.240000
35624e-2的浮點(diǎn)數(shù)表示:356.240000
356.24的科學(xué)計(jì)數(shù)法表示:3.562400E+002
浮點(diǎn)數(shù)在計(jì)算機(jī)中的表示可根據(jù)系統(tǒng)分配的字節(jié)數(shù)不同而分成單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù),計(jì)算機(jī)通常分配4個(gè)字節(jié)給單精度浮點(diǎn)數(shù),分配8個(gè)字節(jié)給雙精度浮點(diǎn)數(shù)。單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)的取值范圍如表2-6所示。
表2-6 浮點(diǎn)型數(shù)據(jù)類型的取值范圍
【例2-7】浮點(diǎn)數(shù)例子
#include <stdio.h>
int main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("a=%f\nb=%f\n",a,b);
return 0;
}
程序運(yùn)行結(jié)果:
a=33333.332031
b=33333.333333
從本例可以看出:
由于a是單精度浮點(diǎn)型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位之后均為無效數(shù)字。
b是雙精度型,有效位為十六位。但VC6.0規(guī)定小數(shù)后最多保留六位,其余部分四舍五入。注意:實(shí)型常數(shù)不分單、雙精度,都按雙精度實(shí)型處理。
2.1.5 字符型數(shù)據(jù)
1.字符型數(shù)據(jù)的表示
字符型數(shù)據(jù)是用單引號(hào)括起來的單個(gè)字符,如'a'、'b'、'='、'+'、'?'都是合法字符型數(shù)據(jù)。在這里單引號(hào)只起定界的作用,并不代表字符。單引號(hào)中的字符不可以只是單引號(hào)(’)和反斜杠(\),因?yàn)榉葱备埽?/span>\)本身就是一個(gè)轉(zhuǎn)義字符。
2.轉(zhuǎn)義字符
轉(zhuǎn)義字符是C語言中表示字符的一種特殊形式。通常使用轉(zhuǎn)義字符表示ASII字符集中不可打印的控制字符和特定功能的字符,如單引號(hào)字符(’)、雙引號(hào)字符(”)和反斜杠的表示(\)。
轉(zhuǎn)義符用反斜線\后面跟一個(gè)字符或一個(gè)八進(jìn)制或十六進(jìn)制數(shù)表示。表2-7所示為C語言中常用的轉(zhuǎn)義字符。
表2-7 常用轉(zhuǎn)義字符含義
廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。表中的‘\ddd’和 ‘\xhh’分別為八進(jìn)制和十六進(jìn)制的ASCII代碼。如‘\101’表示字母‘A’ ,‘\102’表示字母‘B’,‘\134’表示反斜線,‘\XOA’表示換行等。
【例2-8】轉(zhuǎn)義字符的使用。
#include<stdio.h>
int main()
{
printf("fabc\tde\rf\n");
printf("hijk\tL\bM\n");
return 0;
}
程序運(yùn)行結(jié)果:
fab c de
hijk M
3.字符變量
字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:
char a,b;
4.字符變量在內(nèi)存中的存儲(chǔ)形式及使用方法
在C語言中,字符是按其所對(duì)應(yīng)的ASCII的值來存儲(chǔ)的,一個(gè)字符占一個(gè)字節(jié)。表2-8為部分字符所對(duì)應(yīng)的ASCII值。
表2-8 部分字符的ASCII值
數(shù)據(jù)在計(jì)算機(jī)中是按位存放的,每個(gè)位中只能存放“0”或“1”, 8位組成一個(gè)字節(jié)。因此,字符在內(nèi)存中存儲(chǔ)的時(shí)候,是將其ASCII值以8位二進(jìn)制數(shù)形式存放的。
例如,字符‘A’在內(nèi)存中的存放形式為:
【例2-9】向字符變量賦以整數(shù)。
#include<stdio.h>
int main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
return 0;
}
程序運(yùn)行結(jié)果:
x,y
120,121
本程序中定義a,b為字符型,但在賦值語句中賦以整型值。從結(jié)果看,a,b值的輸出形式取決于printf函數(shù)格式串中的格式符,當(dāng)格式符為"c"時(shí),對(duì)應(yīng)輸出的變量值為字符,當(dāng)格式符為"d"時(shí),對(duì)應(yīng)輸出的變量值為該字符對(duì)應(yīng)的ASCII值。
【例2-10】ASCII 碼的使用
#include<stdio.h>
int main()
{
char a,b;
a='a';
b='b';
a=a-32;
b=b-32;
printf("%c,%c\n%d,%d\n",a,b,a,b);
return 0;
}
程序運(yùn)行結(jié)果:
A,B
65,66
本例中,a,b被說明為字符變量并賦予字符值,C語言允許字符變量參與數(shù)值運(yùn)算,即用字符的ASCII 碼參與運(yùn)算,由于大小寫字母的ASCII碼相差32,因此運(yùn)算后把小寫字母換成大寫字母,然后分別以整型和字符型輸出。
5.字符串
字符串是由一對(duì)雙引號(hào)括起的字符序列。例如:“CHINA”,“C program”,“$12.5”等都是合法的字符串。字符串和字符不同,它們之間主要有以下區(qū)別:
(1)字符由單引號(hào)括起來,字符串由雙引號(hào)括起來。
(2)字符只能是單個(gè)字符,字符串則可以含一個(gè)或多個(gè)字符。
(3) 可以把一個(gè)字符型數(shù)據(jù)賦予一個(gè)字符變量,但不能把一個(gè)字符串賦予一個(gè)字符變量。
在C語言中沒有相應(yīng)的字符串變量,也就是說不存在這樣的關(guān)鍵字,將一個(gè)變量聲明為字符串,但是可以用一個(gè)字符數(shù)組來存放一個(gè)字符串,這將在數(shù)組一章內(nèi)予以介紹。
(4) 字符占一個(gè)字節(jié)的內(nèi)存空間。字符串占的內(nèi)存字節(jié)數(shù)等于字符串中字符個(gè)數(shù)加1。增加的一個(gè)字節(jié)中存放字符‘\0’(ASCII碼為0),這是字符串結(jié)束的標(biāo)志。例如,字符串“C program”在內(nèi)存中所占的字節(jié)為:
字符‘a(chǎn)’和字符串“a”雖然都只有一個(gè)字符,但在內(nèi)存中的情況是不同的。
‘a(chǎn)’在內(nèi)存中占一個(gè)字節(jié),可表示為:
“a”在內(nèi)存中占二個(gè)字節(jié),可表示為: