




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章數據類型、運算符與表達式2.1C語言的數據類型2.2常量與變量2.3整型數據2.4浮點型數據2.5字符型數據2.6各類數值型數據間的混合運算2.7算術運算符和算術表達式2.8逗號運算符和逗號表達式2.1C語言的數據類型
C語言程序設計
第二章數據類型、運算符與表達式
字符型(char)短整型(short)
整型整型(int)
基本類型
數值類型長整型(long)
單精度型(float)
實型
雙精度型(double)
數據類型
數組類型([])
構造類型
結構體類型(struct)
共用體類型(union)
枚舉類型(enum)
指針類型(*)
空類型(void)2.2常量與變量2.2.1常量(Constant)常量:在程序運行過程中,其值不能被改變的量。常量分為字面常量和符號常量。字面常量:是在程序中直接引用的數據。例100、021、0x21、3.14、3.14E-4、'A'、'+'符號常量:用符號(標識符)代表的常量。定義形式:#define標識符常量數據
C語言程序設計
第二章數據類型、運算符與表達式<>[例2.1]在程序中使用符號常量#include<stdio.h>#definePRICE30
main(){
intnum,total;
num=10;
total=num*PRICE;
printf("total=%d\n",total);}
C語言程序設計
第二章數據類型、運算符與表達式關于符號常量程序編譯時,符號常量被值替換。符號常量的值在程序運行過程中不能被改變。
PRICE=40;
/*錯誤*/符號常量不能指定類型。intPRICE;/*錯誤*/
優點:含義清楚,方便修改。<>例#include<stdio.h>#definePI3.14
main(){
float
radius,perimeter,area;
radius=10;
perimeter=2*3.14*radius;
area=3.14*radius*radius;}
C語言程序設計
第二章數據類型、運算符與表達式<>PIPI標識符
用來標識變量名、符號常量名、函數名、類型名、文件名等的有效字符序列。
定義規則:標識符只能由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。
如:_1yearmonthstudent_namesum0
M.D.Jones$123#a3b?ca=b
注:(1)在C語言中,大小寫字母不等效;(2)用戶自定義的標識符不能與保留字(關鍵
字)同名。
C語言程序設計
第二章數據類型、運算符與表達式<>關鍵字(保留字)
具有特定含義的標識符,用戶不能用來作自定義標識符。C語言中的關鍵字較少,由ANSI標準推薦的關鍵字有32個。與數據類型有關的(14):
charintfloatdoublesignedunsignedshort
longvoidstructuniontypedef
enumsizeof與存儲類別有關的(4):
autoexternregisterstatic與程序控制結構有關的(12):
dowhileforifelseswitchcasedefaultgoto
continuebreakreturn
C語言程序設計
第二章數據類型、運算符與表達式2.2.2變量變量是指在程序運行中,其值可以被改變的量。變量包括變量名和變量值變量名代表計算機內存中的某一存儲空間,而該存儲空間中存放的數據就是變量的值。
C語言程序設計
第二章數據類型、運算符與表達式<>使用變量時必須“先定義,后使用”。定義形式:
類型標識符變量名1[,變量名2,變量名3,...];
C語言程序設計
第二章數據類型、運算符與表達式自己設定,滿足標識符的規定。如:int,float,char;不可省例如inta,b,c;
floatx,y;
charc1,c2;或intc1,c2;2.3.1整型常量的表示形式整型常量有三種形式:十進制形式:與數學上表示相同。例如100,-12,0八進制形式:由數字0~7組成,在數碼前加0。例如014,056十六進制形式:由數字0~9、A~F組成,在數碼前加0X(數字0和字母X,大小寫均可)。例如0X12,0xAF
C語言程序設計
第二章數據類型、運算符與表達式2.3
整型數據進制間的換算二、八、十六進制數到十進制數的換算采用按權展開法。
例:(11001.11)2
=1*24+1*23+1*20+1*2-1+1*2-2=25.75
(33.50)8=3*81+2*80+5*8-1=26.625
(2AB.F)16
=2*162+10*161+11*160+15*16-1=683.93
C語言程序設計
第二章數據類型、運算符與表達式十進制數到二進制數的換算整數部分采用“除2取余,逆序排列”法。具體做法:十進制整數除以2得到商和余數,繼續商除以2得到商和余數,如此進行直到商為零。所得余數逆序排列即為二進制整數。小數部分采用“乘2取整,順序排列”法。具體做法:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘余下的小數部分,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。然后把取出的整數部分按順序排列起來即為二進制小數。
例:233.8125=(11101001.1101)2
C語言程序設計
第二章數據類型、運算符與表達式二進制數到八、十六進制數的換算,三位二進制數對應一位八進制數、四位進制書數對應一位十六進制,所以轉換時以小數點為分界線,整數部分從低到高,小數部分從高到底按位數分組,每組對應的八或十六進制數碼。
例:(11101001.1101)2
=(011101001.110100)2
=
(351.64)8
(11101001.1101)2
=(11101001.1101)2
=(E9.D)16
C語言程序設計
第二章數據類型、運算符與表達式整型變量的分類(IBMPC)
基本型(整型)int
短整型short或shortint
長整型long或longint
無符號整型:unsigned
無符號短整型:unsignedshort
無符號長整型:unsignedlong
注意:C語言標準沒有規定整型變量在計算機內存中所占的字節數,它與具體的機器和操作系統有關。
C語言程序設計
第二章數據類型、運算符與表達式2.3.2
整型變量整數類型的有關數據:
類型類型說明符長度數的范圍基本型
int
2字節-32768~32767短整型
short
2字節-215~215-1長整型
long
4字節-231~231-1無符號整型
unsigned
2字節0~65535無符號短整型
unsignedshort
2字節0~65535無符號長整型
unsignedlong
4字節0~232-1
C語言程序設計
第二章數據類型、運算符與表達式TurboC2.0對整數類型的內存分配
類型類型說明符長度數的范圍基本型
int
4字節-2147483648~2147483648短整型
short2字節-215~215-1長整型
long
4字節-231~231-1無符號整型
unsigned4字節0~232-1無符號短整型unsignedshort
2字節0~65535無符號長整型unsignedlong
4字節0~232-1
C語言程序設計
第二章數據類型、運算符與表達式VisualC++6.0對整數類型的內存分配整型變量的定義與使用
[例2.2]
#include<stdio.h>
voidmain(){inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}
程序運行顯示:a+u=22,b+u=-14
C語言程序設計
第二章數據類型、運算符與表達式說明:可以看到不同種類的整型數據可以進行算術運算
數據在內存中以二進制形式存放。原碼、反碼和補碼
計算機對數值的表示有原碼、補碼和反碼三種形式,但以補碼方式存儲。原碼:最左邊符號位用數碼0表示正號,用數碼1表示負號,數值部分一般按二進制形式表示。例[10]原=00001010
[-10]原=10001010
反碼:正數的反碼和原碼相同,負數的反碼是對該數的原碼除符號位外各位求反。例[10]反=[10]原=00001010
[-10]反=11110101
C語言程序設計
第二章數據類型、運算符與表達式2.3.3
整型數據在內存中的存放形式補碼:正數的補碼與原碼相同,負數補碼則先對該數的原碼取反(得反碼),然后末位加1
例 [10]補=[10]原=00001010
[-10]原=10001010
[-10]反=11110101
[-10]補=11110110
C語言程序設計
第二章數據類型、運算符與表達式intx;x=10;long
y;y=-10;2000200120022005xy內存內存地址2003200400001010
00000000
11111111
11111111
11111111
11110110
C語言程序設計
第二章數據類型、運算符與表達式
數據超出表示范圍的情況稱為溢出。
[例2.3]整型數據的溢出
#include<stdio.h>
voidmain()
{inta,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
}TC環境下運行結果:32767,-327682.3.4
整型數據的溢出
C語言程序設計
第二章數據類型、運算符與表達式a0111111111111111b1000000000000000在將一個整型常量賦給整型變量時如何進行類型匹配?請注意以下幾點:如果一個整常量的值在-32768~+32767范圍內,認為它是int型。
如果一個整常量的值超過了上述范圍,而在-2147483648~2147483647范圍內,則認為它是1ongint型。一個非負值的整常量后面加字母u或U,認為是unsigned型整變量(只要它的范圍不超過變量的表數范圍即可,防止溢出)
C語言程序設計
第二章數據類型、運算符與表達式2.3.5整型常量的類型
在一個整常量后面加一個字母l或L則認為是longint型常量。例如123l、432L。
C語言程序設計
第二章數據類型、運算符與表達式main(){intx;x=10*9*8*7*6*5*4*3*2*1;printf("%d",x);}例
看看下面程序的輸出是什么?運行結果:-3036longintx;%Ld
C語言程序設計
第二章數據類型、運算符與表達式2.4.1浮點型常量的表示形式十進制形式:由數字和小數點組成;
例如:3.44..3指數形式:由“十進制小數”+“e(或E)”+“十進制數整數”三部分組成。
例如:13.5e-6表示13.5×10-6注:(1)小數點不能單獨出現;例如:0.=.0=0=0.0(2)e或E的兩邊必須有數,且其后面必須為
整數;例如:6E0.2e56E
C語言程序設計
第二章數據類型、運算符與表達式2.4
浮點型數據浮點型變量的分類
單精度float
4字節(32位)
10-38~1038
雙精度double
8字節(64位)
10-308~10308
例
floatx,y;/*指定x、y為單精度實型變量*/
doublez;/*指定z為雙精度實型變量*/
x=123456.711;z=123456.789;
float型變量只能接受7位有效數字,最后兩位數字不起作用。
double型變量能接受16位有效數字。
C語言程序設計
第二章數據類型、運算符與表達式2.4.2
浮點型變量浮點型數據在內存中的存放形式
浮點型數據是按照指數形式存儲的。系統把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分采用規范化的指數形式。小數部分用二進制表示,指數部分用2的冪次來表示。
C語言程序設計
第二章數據類型、運算符與表達式浮點型數據的舍入誤差
由于浮點型變量是由有限的存儲單元組成的,因此能提供的有效數字總是有限的。在有效位以外的數字將被舍去。由此可能會產生一些誤差。
[例2.4]
#include<stdio.h>
voidmain()
{floata;
a=3.141592612;
printf("%f\n",a);
}
運行結果:
3.141593
C語言程序設計
第二章數據類型、運算符與表達式說明:一個單精度浮點型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確地表示該數。
例浮點型數據的舍入誤差
#include<stdio.h>
voidmain()
{floata,b;
a=123456.789e5;
b=a+20;
printf("a=%f,b=%f\n",a,b);
}
C語言程序設計
第二章數據類型、運算符與表達式說明:應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數C編譯系統將浮點型常量作為雙精度來處理,分配8個字節。
例如:f=2.45678*4523.65
系統先把2.45678和4523.65作為雙精度數,然后進行相乘的運算,得到的乘也是一個雙精度數。精度高,速度慢。如果把一個浮點型常量賦給一個單精度變量f系統給出警告,警告不影響連接和運行最后結果,但只取其結果前7位賦給浮點型變量f。
C語言程序設計
第二章數據類型、運算符與表達式2.4.3
浮點型常量的類型如是在數的后面加字母f或F(如1.65f,654.87F),編譯系統就會把它們按單精度處理。
例如:floatf,g;f=3.1415926;/*警告*/g=1.65f;
C語言程序設計
第二章數據類型、運算符與表達式2.5.1字符型常量
在計算機中,字符的使用占有很大的比重。字符包括各種文字、數字、符號和控制字符。用單引號括起來的一個字符;例如:'A'、'1'、'?'、'a'等。
‘abc’、“a”用單引號括起來的由反斜杠(\)引導的轉義字符。
例如:'\n'、'\101'、'\x41'
C語言程序設計
第二章數據類型、運算符與表達式只能是英文的單引號在統計字符個數時,只能記為一個字符2.5
字符型數據轉義字符表
C語言程序設計
第二章數據類型、運算符與表達式字符形式含義ASCII碼\n換行10\t水平制表位9\b退格8\r回車,將當前位置移到本行開頭13\\、\'、\"代表字符“\”、“'”、“"”92、39、34\ddd1~3位八進制數所代表的字符\xhh1~2位十六進制數所代表的字符1234567812345678[例2.5]轉義字符的使用
main()
/*注@代表空格*/{printf("@@ab@c\t@de\rf\tg\n");
printf("h\ti\b\bj@@@k");
}
設一個輸出區占8列,試分析輸出結果。
C語言程序設計
第二章數據類型、運算符與表達式@
@
a
b
@
c@
d
efg
hij@
@
@
k2.5.2字符變量字符變量用來存放字符常量。字符變量在內存中占一字節,取值范圍0~255。字符變量的定義和使用
例
charc1,c2;
c1='a';c2='b';
例charc1=‘a’;
C語言程序設計
第二章數據類型、運算符與表達式對字符的編碼方法很多,使用最普遍的是美國標準信息交換碼,簡稱ASCII碼。一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內存中去,而是將該字符的相應的ASCII代碼放到存儲單元中。這樣使字符型數據和整型數據之間可以通用。
C語言程序設計
第二章數據類型、運算符與表達式2.5.3
字符數據在內存中的存放形式[例2.6]向字符變量賦予整數main(){charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}該例的輸出是:ab
97
98
相當于:c1=‘a’;c2=‘b’;因為:字符以ASCII碼存放,‘a’的ASCII碼為97,'b'的ASCII碼為98。
C語言程序設計
第二章數據類型、運算符與表達式Turboc中的字符變量是有符號的,表示范圍是–128---127
main(){charc;c=130;ptintf("%c%d\n",c,c);}輸出結果是:e–126將charc;改成unsignedcharc;輸出結果變成:e130
C語言程序設計
第二章數據類型、運算符與表達式[例2.7]/*大小寫字母轉換的程序*/main(){charc1,c2;
c1='a';c2='b';c1=c1-32;c2=c2-32;printf("%c%c\n",c1,c2);}
C語言程序設計
第二章數據類型、運算符與表達式2.5.4字符串常量字符串常量:雙引號括起來的字符序列。
例:"Howdoyoudo."
"CHINA"
"a"
"$123.45"注意區別字符常量和字符串常量例:charc;c='a';c="a";/*錯誤*/
C語言程序設計
第二章數據類型、運算符與表達式字符串常量在內存中的存放:每一個字符均以其ASCII碼存放,且最后添加一個“空字符”\0.
"CHINA"存放在內存中的情況是:
注意:\0是系統自動加入的,不需用戶輸入。C中沒有專門的字符串變量,要把字符串常量存儲在變量中,必須使用字符數組。
C語言程序設計
第二章數據類型、運算符與表達式CHINA\02.6各類數據混合運算整型、實型(包括單、雙精度)、字符型數據可以混合運算。
例
10+'a'+1.5-8765.1234*'b'混合運算時,先轉換成同一種類型,然后進行運算。
C語言程序設計
第二章數據類型、運算符與表達式高doublefloatlongunsigned低intchar,short例:inti;
floatf;doubled;longe;10+'a'+i
*
f-d
/
e高doublefloatlongunsigned低intchar,shortintdoubledouble上述轉換過程是由系統自動進行的。
C語言程序設計
第二章數據類型、運算符與表達式doubledouble2.7
算術運算符和算術表達式2.7.1C語言運算符和C表達式簡介C運算符
算術運算符:+-*/%++--
關系運算符:<<===>>=!=
邏輯運算符:!&&||
位運算符:<<>>~|^&
賦值運算符:=及其擴展
條件運算符:?:
逗號運算符:,
指針運算符:*&
求字節數:sizeof
強制類型轉換:(類型)
分量運算符:.->
下標運算符:[]
其它:()-
C語言程序設計
第二章數據類型、運算符與表達式C表達式
表達式是由操作數和運算符組成的序列。根據運算符分為以下幾類:
算術表達式:如2+3-4.7*6.3
關系表達式:x<0
y<=z+6
邏輯表達式:x>0&&y>0
賦值表達式:a=
7
條件表達式:x>0?y=2:y=3
逗號表達式:a=2,b=3,c=4
C語言程序設計
第二章數據類型、運算符與表達式2.7.2主要的算術運算符和算術表達式基本的算術運算符+
加法運算符,如3+5
正值運算符,如+3-
減法運算符,如5-2
負值運算符,如-3*
乘法運算符,如3*5/
除法運算符,如5/3%
模運算符(求余運算符),如7%4
C語言程序設計
第二章數據類型、運算符與表達式說明:如果除號兩邊是整數,即做整除。%兩邊必須為整數算術表達式和運算符的優先級與結合性算術表達式:用算術運算符和括號將運算對象連接起來、符合C語法規則的式子。
如:a*b/c-1.5+'a'運算符的優先級:先乘除、后加減;括號優先。運算符的結合性:運算對象兩側的運算符優先級相同時,運算符的結合方向。左結合性:結合方向為從左至右(先左后右,簡稱左結合)。算術運算符為左結合。右結合性:結合方向為從右至左(先右后左,簡稱右結合)。賦值運算符=為右結合。例:a=b=c=d=3
C語言程序設計
第二章數據類型、運算符與表達式例已知:floata=2.0;intb=6,c=3;求解:a*b/c-1.5+’A’+abs(-5)=?12.0/34.0-1.52.5+65(int)67.5572.5
C語言程序設計
第二章數據類型、運算符與表達式強制類型轉換
運算符兩側的數據類型不同時,先自動進行類型轉換,再運算。程序員可以強制進行某種轉換。
一般形式:
(類型名)(表達式)
例(double)a;(int)(x+y);(int)x+y(float)(5%3);
(int)a;
C語言程序設計
第二章數據類型、運算符與表達式說明:強制類型轉換時,得到一個所需類型的中間變量,原來變量的類型不發生變化。[例2.8]強制類型轉換#include<stdio.h>voidmain(){float
x;
inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}
C語言程序設計
第二章數據類型、運算符與表達式自增、自減運算符
自增:使變量的值加1;自減:使變量的值減1。
++i;/*在使用i之前使i加1*/
--i;/*在使用i之前使i減1*/
i++;/*在使用i之后使i加1*/
i--;/*在使用i之后使i減1*/
例
i=3;
j=++i;/*先使i加1,再賦給j。*/k=i++;
print(“j=%d,i=%d,k=%d”,j,i,k);
輸出為:j=4,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論