C語言程序設(shè)計)第2章_第1頁
C語言程序設(shè)計)第2章_第2頁
C語言程序設(shè)計)第2章_第3頁
C語言程序設(shè)計)第2章_第4頁
C語言程序設(shè)計)第2章_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章第二章 數(shù)據(jù)類型、運算符和數(shù)據(jù)類型、運算符和表達式表達式本章目錄本章目錄2.1 2.1 C C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型 2.2 2.2 常量常量 2.3 2.3 變量變量2.4 2.4 運算符和表達式運算符和表達式 2.5 2.5 數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換 2.1 C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型 一個程序應(yīng)包括數(shù)據(jù)結(jié)構(gòu)和算法。數(shù)據(jù)結(jié)構(gòu)是在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。算法是如何對數(shù)據(jù)結(jié)構(gòu)進行處理達到編程者的目的的想法,由于每個人的想法不一樣,所以程序代碼有可能不相同,但最后都能達到自己的目的。根據(jù)不同的編程語言,程序的概念可以這樣表示: 程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計方

2、法+語言環(huán)境 C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的。C的數(shù)據(jù)類型如下: 構(gòu)造類型 整型int 字符型 char 實型(浮點型) 枚舉類型enum 基本類型 空類型void 指針類型 * 單精度型 float 雙精度型 double數(shù)據(jù)類型 數(shù)組類型 結(jié)構(gòu)體類型struct 共用體類型 union2.2常量常量 在程序執(zhí)行過程中,其值始終保持不變的量稱之為常量。常量具有一定的類型,類型由其表示形式?jīng)Q定。在C語言中,常量可以分為整型常量、實型常量、字符型常量、字符串常量、符號常量等。 2.2常量常量 1. 整型常量整型常量 整型常量就是整型常數(shù),它是一種從字面即可判斷其值的常量。C語言中常量可以

3、用十進制、八進制和十六進制表示。 1十進制整數(shù)。由數(shù)字09組成但第一個數(shù)不能為0的整數(shù) 。如:123,-456,0。 2八進制整數(shù)。以0開頭由07組成的整數(shù)。 如0123表示八進制數(shù)123。 3十六進制整數(shù)。以0 x開頭由數(shù)字09和字母af(AF)組成的的數(shù)。如0 x123,代表數(shù)十六進制的123。 整型常量的寫法一定要合法,下面各數(shù)不合法:078,3a。 其中078表示八進制數(shù),但包含了07以外的數(shù)8。3a表示十進制數(shù),但包含了09以外的字符a。2.2常量常量 2 .實型常量實型常量 實數(shù)又稱浮點數(shù),就是日常生活中的帶小數(shù)點的數(shù)。實型常量有兩種表示形式: (1)十進進小數(shù)形式。它由數(shù)字和小數(shù)

4、點組成(注意必須有小數(shù)點)。如.123、123.、123.0、0.0都是十進制小數(shù)形式。其中123.0末尾的數(shù)字0可以省略,.123小數(shù)點前面的0可以省略,0.0可以省略其中一個0但不能都省略。 (2)指數(shù)形式。如123e3或123E3都代表123103。但注意字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須有整數(shù),如e3,2.1e3.5,.e3,e等都不是合法的指數(shù)形式。 一個實數(shù)可以有多種指數(shù)表示形式。例如123.456可以表示為,12.3456e1,1.23456e2,0.123456e3等。把其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”,即在字母e(或E)之前的小數(shù)部分中,小數(shù)點左

5、邊應(yīng)有一位(且只能有一位)非零的數(shù)字。一個實數(shù)在用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。例如,指定將實數(shù)5689.65按指數(shù)形式輸出,必然輸出5.68965e+003。2.2常量常量3.字符型常量字符型常量 由字符組成的、其值不能被改變的量稱為字符型常量。根據(jù)組成結(jié)構(gòu)的不同,字符型常量可分為字符常量、轉(zhuǎn)義字符和字符串常量。1字符常量和轉(zhuǎn)義字符字符常量和轉(zhuǎn)義字符 C的字符常量是用單引號()括起來的一個字符。如a,x, D,? , $等都是字符常量。注意,a和A是不同的字符常量。 除了以上形式的字符常量外,C還允許用一種特殊形式的字符常量,就是以一個“”開關(guān)的字符序列。例如,前面已經(jīng)遇到過的

6、,在printf函數(shù)中的n,它代表一個“換行”符。這是一種“控制字符”,在屏幕上是不能顯示的。在程序中也無法用一個一般形式的字符表示,只能采用特殊形式來表示。“”使后跟的一個字符失去了原有的意義,因此又稱作轉(zhuǎn)義字符。如,n中的“n”不代表字母n,而作為“回車換行”符處理。轉(zhuǎn)義字符是一種特殊形式的字符常量,主要用以表示控制代碼和圖形符號。常用的轉(zhuǎn)義字符見下表:2.2常量常量字符形式等價于ASCII碼轉(zhuǎn)義字符的意義ax077鳴鈴bx088退格,將當(dāng)前位置移到前一列fX0C12走紙換頁nX0A10回車換行rX0D13回車,將當(dāng)前位置移到本行開頭tX099水平制表(跳到下一個tab位置)X5C92反斜

7、杠字符“”X2739單引號字符X2234雙引號字符dddddd代表1-3位八進制數(shù)所代表的字符xhhhh代表1-2位十六進制數(shù)所代表的字符 表中,ddd是用八進制數(shù)表示的ASCII碼。例如:用八進制數(shù)102(相當(dāng)于十進制數(shù)66)代表ASCII字母“B”;用033代表Esc。從ASCII碼表中能夠查到常用的轉(zhuǎn)義字符。xhh是用十六進制數(shù)表示的ASCII碼。例如:用x1B同樣可以代替Esc。 由此可知,用轉(zhuǎn)義字符可以表示任一ASCII碼;并且任一ASCII碼可以有多種表示方法。2.2常量常量有關(guān)字符常量的幾點說明: 1)單引號本身只作定界符使用,而不是字符常量的一部分。 2)因字符“”和“”在字符

8、常量中有特殊用途,因此,他們不能直接作字符常量使用。若要將這兩個字符用作字符常量,應(yīng)寫為和,即在這些字符前再加一個反斜杠“”。 3)英文字母區(qū)分大小寫。注意,a和A是不同的字符常量。 4)字符常量具有數(shù)值,其值對應(yīng)于ASCII碼值,是0-255之間的整數(shù)。例如,A的值是65,a為97。因此,字符型常量與整型常量可以混合使用。在不至于引起混淆的情況下,0-255之間的整數(shù)可以用字符常量表示。 例如,把63寫成A-2,反之亦然。 5)輸出字符常量時的輸出格式控制符用%c。2.2常量常量例2.1 字符型常量與整型常量混合使用實例。要求編程輸出字符“#”以及其ASCII碼值,求a+1的值和輸出其ASC

9、II字符,輸出整數(shù)65以及該數(shù)字所對應(yīng)的ASCII字符。main()printf(%c , %d n , # , # ) ;printf(%c , %d n, a+1, a+1 ) ;printf(%c , %d n , 65 , 65 ) ;運行結(jié)果如下: 2.2常量常量2字符串常量字符串常量 字符串常量是一對雙引號括起來的字符序列,如, “How do you do.”, “CHINA”, “a”, “$123.45” 都是字符串常量。可以直接輸出一個字符串。如 printf(“How do you do.”); 不要將字符常量與字符串常量混淆。a是字符常量,“a”是字符串常量,二者不同。

10、有人不能理解a和“a”究竟有什么區(qū)別?C規(guī)定:在每一個字符串的結(jié)尾加一個“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符0作為字符串結(jié)束標(biāo)志。0是一個ASSCII碼為0的字符,從ASSCII代碼中可以看到ASSCII碼為0字符是“空操作字符”,即它不引起任何控制動作,是一個不可顯示的字符。如果有一個字符串“CHINA”,實際上在內(nèi)存中是 它的長度不是5個字符,而是6個字符,最后一個字符為0。 CIHNA02.2常量常量4 符號常量符號常量 在程序設(shè)計中,對于某些有特定含義的、經(jīng)常使用的常量可以用標(biāo)識符來代替。用標(biāo)識符代表常量,可增加程序的可讀性和可維護性。 在C語言中,代表常量

11、的標(biāo)識符稱作符號常量。符號常量在使用之前必須先定義,符號常量定義的一般格式為: #define 標(biāo)識符 常量 其中#define表示宏定義的一個命令,宏定義必須寫在一行上。標(biāo)識符稱為“宏名”,字符串稱為“宏體”。其功能是把該標(biāo)識符定義為其后的常量值。一經(jīng)定義,在程序中所有出現(xiàn)該標(biāo)識符的地方均代表該常量值。習(xí)慣上符號常量的標(biāo)識符用大寫字母,變量標(biāo)識符用小寫字母,以示區(qū)別。 2.2常量常量例2.2宏定義的使用#define PI 3.14159 /*宏定義命令定義PI 為3.14159*/main() float s,r; /*s,r定義為實型變量用來存放實型數(shù)據(jù)*/ r=5; /*5賦值給r*/

12、 s=PI*r*r; printf(s=%fn,s);運行結(jié)果為:2.2常量常量 使用符號常量的好處是:(1)含義清楚。如上面的程序中,看程序時從PI就可知道它代表“”。因此定義符號常量名時應(yīng)考慮“見名知意”。(2)在需要改變一個常量時能做到“一改全改”。在定義符號常量時,應(yīng)注意以下幾點:如果程序中有多個符號常量,必須用多個命令行分別定義。即一行只能定義一個符號常量。#define PI 3.1415926#define TRUE 1符號常量代表的常量可以是前文介紹的各種形式的常量,還可以代表程序的其他語法成分。2.2常量常量例2.3#define P printfmain()char a,b

13、;a=x;b=y;a=a-32;b=b-32;P(%c,%cn%d,%dn,a,b,a,b); 運行結(jié)果為:這里用P代表了庫函數(shù)名printf,3)符號常量的定義可以放在程序的任何位置,但必須在使用之前預(yù)先定義;因此,一般放在程序的開始位置。2.3變量變量在程序運行過程中,其值可以改變的量稱為變量。一個變量 必須有一個名字即變量名,變量名要遵守標(biāo)識符的命名規(guī)則。變量名在內(nèi)存中占據(jù)一定的存儲單元。在該存儲單元中存放變量的值。 下面各節(jié)分別介紹整型、實型(浮點型)、字符型變量。2.3變量變量1.整型變量整型變量 1整型變量的分類 整型變量的用來存放整型常量的。根據(jù)數(shù)值的范圍將變量定義為基本整型、短

14、整型或長整型。分別表示: 1)基本整型,以int表示。 2)短整型,以short int表示,或以short表示。 3)長整型,以long int表示,或以long表示。 在Turbo C中一個int型的變量值的范圍-215(215-1),即-3276832767。可以將變量定義為“無符號”和“有符號”類型,即加上修飾符unsigned和修飾符signed。如果既不指定為signed,也不指定為unsigned,則隱含為有符號(signed)。歸納起來,可以用以下6種整型變量。即: 有符號基本整型 signed int 無符號基本整型 unsigned int 有符號短整型signed sho

15、rt int 無符號短整型unsigned short int 有符號長整型signed long int 無符號長整型unsigned long int2.3變量變量 標(biāo)準(zhǔn)沒有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存字節(jié)數(shù),只要求long型數(shù)據(jù)長度不短于int型,short型不長于int型。具體如何實現(xiàn),由各計算機系統(tǒng)自行決定。Turbo C系統(tǒng)對各類數(shù)據(jù)分配如下: 數(shù)據(jù)類型所占字節(jié)數(shù)(個)所占位數(shù)(bit)int216short 216long 432unsigned int 216unsigned short 216unsigned long 432表2.2 數(shù)據(jù)類型 一個unsigned int型

16、的變量值的范圍065535。 在計算機內(nèi)整形數(shù)據(jù)占2個字節(jié)。以2為例,把2轉(zhuǎn)化為二進制之后,它的存儲形式為:00000000000000102.3變量變量2.整型變量的定義 C規(guī)定在程序中所以用到的變量都必須在程序中先定義后使用,即“強制類型定義”。每個變量必須要有確定的類型。整型變量定義的一般形式: 整型數(shù)據(jù)類型名 變量名;例如:int a,b; (指定變量a、b為整形)unsigned short c,d; (指定變量c、d為無符號短整型)long e,f; (指定變量e,f為長整型) 對變量的定義,一般是放在一個函數(shù)的開頭部分的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的

17、分程序)。C語言允許在一個定義中定義多個變量,變量之間用逗號隔開。變量定義之后,編譯系統(tǒng)就會為其分配相應(yīng)的存儲空間。 2.3變量變量例2.4整型變量的定義與使用。main()int a,b; /*定義a,b為基本整型變量*/unsigned u;/*定義u為無符號整型變量*/a=12;u=10;b=a+u;printf(a+u=%dn,b); 運行結(jié)果為: 可以看到不同種類的整型數(shù)據(jù)可以進行算術(shù)運算。在本例中是int型數(shù)據(jù)與unsigned int 型數(shù)據(jù)進行相加相減運算。 2.3變量變量3整型號數(shù)據(jù)的溢出 在Turbo C中一個int 型變量的最大允許值為32767,如果再加1,會出現(xiàn)什么情

18、況?例2.5 整型數(shù)據(jù)的溢出。main()int a,b;a =32767;b=a+1;printf(“%d,%d”,a,b); 運行結(jié)果為 :2.3變量變量 2.實型變量實型變量 1實型變量的分類 C語言中實型變量用來存放實型常量的。實型變量分為單精度(float型)、雙精度(double型)和長雙精度型(long double)。 數(shù)據(jù)類型 所占字節(jié)數(shù)(個)所占位數(shù)(bit) 有效位數(shù) float 4 32 67 double 8 64 1516表2.32實型變量的定義對每一個實型變量都應(yīng)在使用前必須先定義。實型變量定義的一般形式:實型數(shù)據(jù)類型名 變量名;例如float x,y, (指定x

19、,y為單精度實數(shù))double z; (指定z為雙精度實數(shù))2.3變量變量3實型數(shù)據(jù)的使用 由于實型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差。例2.6 實型數(shù)據(jù)的舍入誤差。main()float a,b;a=123456.789e5;b=a+20;printf(a=%fnb=%f,a,b);運行結(jié)果為:2.3變量變量 程序內(nèi)printf函數(shù)中的“%f”是輸出一個實數(shù)時的格式符。程序運行時,輸出b的值與a相等。原因是:a的值比20大很多,a+20的理論值應(yīng)是12345678920,而一個實型變量只能保證的有效數(shù)字是7位有效數(shù)

20、字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。運行程序得到的a和b的值是12345678848.000000,可以看到,前8位是準(zhǔn)確的,后幾位是不準(zhǔn)確的,把20加到后幾位上,是無意義的。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。如果想得到預(yù)期效果,讀者可以把float改為double類型 。與此類似問題有很多,讀者編程時應(yīng)當(dāng)注意。2.3變量變量3.字符型變量字符型變量 1字符型變量的分類 字符型變量用來存放字符常量,C語言的字符型變量分為有符號型(char)變量和無符號型(unsigned char)變量。數(shù)據(jù)類型所占字節(jié)數(shù)(個) 所占位數(shù)(bit) 取值范圍

21、有效位數(shù) char 1 8 -128128 67unsigned char 1 8 025515162字符變量的定義 用到字符型變量時必須先定義。請注意字符型變量在內(nèi)存中占用1個字節(jié)的存儲空間,只能放一個字符,不要以為在一個字符變量中可以放一個字符串(包括若干字符)。定義的一般形式:字符型數(shù)據(jù)類型名 變量名char c1,c2;其中c1和c2為字符型變量,各可以放一個字符。 2.3變量變量 3字符型變量的使用 例2.7:向字符變量賦以整數(shù)。 main() char c1,c2; c1=65; c2=97; printf(c1=%c c2=%cn,c1,c2); printf(c1=%d c2=

22、%dn,c1,c2); 運行結(jié)果: 2.3變量變量 定義c1,c2為字符變量。但在第3和第4行中,將整數(shù)65和97分別賦給c1和c2,它的作用相當(dāng)于以下兩個賦值語句: c1=A;c2=a; 因為A和a的ASCII碼為65和97。在程序的第3和第4行是把65和97兩個整數(shù)直接存放到c1和c2手內(nèi)存單元中。“%c”是輸出字符時必須使用的格式符。可以看到:字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。它們既可以用字符格式輸出(用%c),也可以用整數(shù)形式輸出(用%d)。但應(yīng)注意字符數(shù)據(jù)只占一個字節(jié),它只能存放0255或-128128范圍內(nèi)的整數(shù)。2.3變量變量 例2.8:大小寫字母的轉(zhuǎn)換。 main() char c

23、1 , c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c %c,c1,c2); 運行結(jié)果為:2.3變量變量 所有用到的變量 “先定義,后使用”。這樣做的目的是: 1凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用得正確。例如,如果在定義部分寫了 int abc; 而在執(zhí)行語句中錯寫成acb。 如: acb=30; 在編譯時檢查出acb未經(jīng)定義,不作為變量名。因此輸出“變量acb未經(jīng)聲明”的信息,便于用戶發(fā)現(xiàn)錯誤,避免變量名使用時出錯。 2每一個變量被指定為一確定類型,在編譯時就能為其分配相應(yīng)的存儲單元。如指定a、b為int型,Turbo C編

24、譯系統(tǒng)為a和b 各分配兩個字節(jié),并按整數(shù)方式存儲數(shù)據(jù)。 3指定每一變量屬于一個類型,這就便于在編譯時,據(jù)此檢查該變量所進行的運算是否合法。例如,整型變量a和b,可以進行求余運算: a%b %是“求余”,得到a/b的余數(shù)。如果將a、b的指定為實型變量,則不允許進行“求余”運算,在編譯時會給出有關(guān)“出錯信息”。2.3變量變量4.變量賦初值變量賦初值 程序中常需要對一些變量賦初值。賦初值的方式如下: 1語言允許在定義變量的同時使變量初始化。如: int a=3:/*指定a為整型變量,初值為3*/ float f=3.56;/*指定f為實型變量,初值為3.56*/ char c=a;/*指定c為字符型

25、變量,初值為a*/ 2也可以使被定義的變量的一部分賦初值。如 int a,b,c=5; 表示指定a、b、c為整型變量,只對c初始化,c的值為5。 3對于幾個變量同時賦初值。如 int a=3,b=3,c=3; 表示a、b、c的初值都是3。不能寫成: int a=b=c=3; 初始化不是在編譯階段完成的,而是在程序運行時執(zhí)行本函數(shù)時賦予初值的。2.4運算符和表達式運算符和表達式 C語言中運算符和表達式數(shù)量很多。豐富的運算符和表達式使C語言功能十分完善。這也是語言的主要特點之一。 C語言的運算符不僅具有不同的優(yōu)先級,而且還有一個特點,就是它的結(jié)合性。在表達式中,各運算量參與運算的先后順序不僅要遵守

26、運算符優(yōu)先級別的規(guī)定,還要受運算符結(jié)合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結(jié)合性是其它高級語言的運算符所沒有的,因此也增加了C語言的復(fù)雜性。2.4運算符和表達式運算符和表達式 1 .算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式 1C語言提供了豐富的算術(shù)運算符,能夠參與各種復(fù)雜的運算,基本的算術(shù)運算符有如下: 1) + 加法運算符,雙目運算符,即應(yīng)有兩個量參與加法運算。如a+b,4+8等。自左至右結(jié)合性。也可以表示取正值運算符,屬于單目運算符,自右至左結(jié)合性。 2)- 減法運算符,雙目運算符。也可以表示取負值運算符,屬于單目運算,如-x,-5等,自右至左結(jié)合性。 3)*

27、 乘法運算符,雙目運算符,自左至右結(jié)合性。 4) / 除法運算符,雙目運算符,自左至右結(jié)合性。參與運算量均為整型時,結(jié)果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結(jié)果為雙精度實型。2.4運算符和表達式運算符和表達式例2.9main()int a=15,b=2,c;c=a/b;printf(%d ,c);運行結(jié)果為: 參與運算量均為整型時,結(jié)果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結(jié)果為雙精度實型。2.4運算符和表達式運算符和表達式 5)% 求余運算符(模運算符),雙目運算符,自左至右結(jié)合性。要求參與運算的量必須為整型。求余運算的結(jié)果是兩數(shù)相除后的余數(shù)。如100%3的結(jié)果1。1.

28、5%2是非法的。 6)算術(shù)運算符中的運算符和數(shù)學(xué)中的使用是一樣的,先乘、除和求余后加減。2算術(shù)表達式 算術(shù)表達式是由算術(shù)運算符和括號連接起來的式子,運算對象可以是常量、變量和函數(shù)等。算術(shù)表達式的值可以是整型或?qū)嵭汀R韵率撬阈g(shù)表達式的例子: a+b,(a*2)c,(x+r)*8-(a+b)7, sin(x)+sin(y) 其中sin(x)是求解正弦函數(shù),應(yīng)用sin(x)時應(yīng)在程序的開始部分加上#include “math.h”在C語言中使用算術(shù)運算符注意的問題: 1)算術(shù)表達式中的*不能省略。如求三角形的面積公式s=ab/2;在C語言中寫成:s=a*b/2 2)算術(shù)表達式中只能出現(xiàn)C語言中允許使

29、用的運算字符。如數(shù)學(xué)面積公式式r2 中的,在C語言中沒有這個字符,我們可以通過宏定義的方法實現(xiàn)。 3)算術(shù)表達式中只能通過()來改變運算對象的運算順序。2.4運算符和表達式運算符和表達式 2. 自增,自減運算符自增,自減運算符+ 自增1的運算符,其功能是使變量的值自增1。- 自減1的運算符,其功能是使變量的值自減1。自增1,自減1運算符均屬于單目運算,都具有右結(jié)合性。可有以下幾種形式: 1+i i自增1后再參與其它運算。2-i i自減1后再參與其它運算。3i+ i參與運算后,i的值再自增1。4i- i參與運算后,i的值再自減1。 在理解和使用上容易出錯的是i+和i-。特別是當(dāng)它們出在較復(fù)雜的表

30、達式或語句中時,常常難于弄清,因此應(yīng)仔細分析。2.4運算符和表達式運算符和表達式例2.10main()int i=4,a,b,c,d;a=i+;b=+i;c=i-;d=-i;printf(a=%dnb=%dnc=%dnd=%d,a,b,c,d); 運算結(jié)果: 2.4運算符和表達式運算符和表達式例2.11main()int i=4;printf(“%dn%dn%dn%d”,+i,i+,-i,i-);運行結(jié)果: 兩個例子中的區(qū)別在于printf函數(shù),在C語言中printf函數(shù)的參數(shù)應(yīng)從后向前運算即現(xiàn)算i-,-i,i+,+i。讀者可以上機運行體會。 2.4運算符和表達式運算符和表達式 3.賦值運算符

31、和賦值表達式賦值運算符和賦值表達式 1 賦值運算符 1) 簡單賦值運算符 “=” 在C語言中,“= ”稱為賦值運算符。它的作用是將一個數(shù)據(jù)賦給一個變量,與數(shù)學(xué)中的等號不同,它的結(jié)合性是自右至左的。優(yōu)先級僅高于逗號運算符。 2)復(fù)合賦值運算符 C語言中提供了+=,-=,*=,=,%=,=,&=,=,|=等復(fù)合運算符。在賦值符“=”之前加上其它二目運算符。 2.4運算符和表達式運算符和表達式 3.賦值運算符和賦值表達式賦值運算符和賦值表達式2賦值表達式 由賦值運算符將變量和表達式連接起來的式子稱為賦值表達式。 1)簡單賦值表達式一般形式為: 變量=表達式 例如: x=a+b w=sin(a

32、)+sin(b) y=i+ 賦值表達式的功能是計算表達式的值再賦予左邊的變量。 a=b=c=5 可理解為 a=(b=(c=5)2.4運算符和表達式運算符和表達式2)復(fù)合賦值表達式一般形式為: 變量 雙目運算符=表達式例如a+=5 等價于a=a+5x*=y+7 等價于x=x*(y+7)r%=p 等價于r=r%p在C中,凡是表達式可以出現(xiàn)的地方均可出現(xiàn)賦值表達式。例如,式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x ,故x應(yīng)等于13。在C語言中也可以組成賦值語句,按照C語言規(guī)定,任何表達式在其末尾加上分號就構(gòu)成為語句。因此如x=8;a=b=c=5;

33、都是賦值語句,在前面各例中我們已大量使用過了。2.4運算符和表達式運算符和表達式3賦值運算的類型轉(zhuǎn)換如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進行類型轉(zhuǎn)換,即把賦值號右邊的類型換成左邊的類型。具體規(guī)定如下:1)實型賦予整型,舍去小數(shù)部分。2)整型賦予實型,數(shù)值不變,但將以浮點形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3)字符型賦予整型,由于字符型為一個字節(jié),而整型為二個字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。 4)整型賦予字符型,只把低八位賦予字符量。總之,不同整型數(shù)據(jù)間的賦值歸根到底是按照存儲單元的存儲形式直接賦給。2.4運算符和表達式運算符和表達式例2.12

34、main() int a,b=65; float x,y=8.88; char c1=k,c2; a=y; x=b; printf(%d,%fn ,a,x); a=c1; c2=b; printf(%d, %c,a,c2); 運行結(jié)果為:2.4運算符和表達式運算符和表達式 本例說明了賦值運算中的類型轉(zhuǎn)換規(guī)則。a為整型變量,被賦予實型量y值8.88后,舍去小數(shù)部分只取整數(shù)8。x為實型變量,被賦予整型量b值65,后增加了小數(shù)部分。字符型變量c1的值賦予整型變量a(直接把c1的一個字節(jié)放到了變量a的低字節(jié)中,高字節(jié)補0),整型變量b賦予字符型變量c2 ,是整型變量b的低八位賦給字符型變量c2(b的低

35、八位為01000001,即十進制66,按ASCII碼對應(yīng)于字符A)。2.4運算符和表達式運算符和表達式 4 .逗號運算符和逗號表達式逗號運算符和逗號表達式 1逗號運算符 C語言中逗號“,”是一種運算符,稱為逗號運算符。 2逗號表達式 逗號表達式是把兩個表達式連接起來組成一個表達式。 一般形式為: 表達式1,表達式2表達式n 逗號表達式的結(jié)合方向是自左至右的,先求解表達式1,然后求解表達式2最后求解表達式n的值,最后最后求解表達式n的值作為整個逗號表達式的值。 例2.13 main() int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf(y=%d,x=%d,

36、y,x); 運行結(jié)果為:2.4運算符和表達式運算符和表達式 本例中,(x=a+b),(b+c)是一個逗號表達式,y的值是整個逗號表達式的值,也就是表達式(b+c)的值,x是第一個表達式的值。對于逗號表達式還要說明幾點:1)程序中使用逗號表達式,要分別求逗號表達式內(nèi)各表達式的值2)并不是在所有出現(xiàn)逗號的地方都組成逗號表達式,如在變量說明中,函數(shù)參數(shù)表中逗號只是用作各變量之間的間隔符。3)在本章中逗號運算符的優(yōu)先級最低,其次賦值運算符,最高是算術(shù)運算符。2.4運算符和表達式運算符和表達式 5 .條件運算符條件運算符1條件運算符 C語言中把“?:”稱作條件運算符。條件運算符要求有三個操作對象,是C語

37、言中唯一的三目運算符,它連接三個運算分量。2條件表達式 一般形式如下: 表達式1?表達式2:表達式3 它的執(zhí)行過程是:先計算表達式1,如果其值為真,則求解表達式2的值,并作為結(jié)果值,否則求解表達式3的值作為結(jié)果值。例如:max=(ab)?a:b; 該語句執(zhí)行時,當(dāng)ab條件成立,變量max取a值,否則取b值。2.4運算符和表達式運算符和表達式例2.14 main() int a,b; a=2;b=3; printf(%d,(ab)?a:b); 運算結(jié)果:條件運算符的優(yōu)先級較低,只高于賦值運算符和逗號運算符。2.4運算符和表達式運算符和表達式 6長度運算符長度運算符 C語言中sizeof()稱作長

38、度運算符。它是單目運算符。主要用于計算變量或數(shù)據(jù)類型所占的內(nèi)存字節(jié)數(shù)的大小。一般形式: 1sizeof(數(shù)據(jù)類型名) 計算數(shù)據(jù)類型在內(nèi)存中的所占的字節(jié)數(shù) 2sizeof(變量名) 計算變量在內(nèi)存中的所占的字節(jié)數(shù)例2.15main()int a; float b;printf(“%d ,%d ,%d ,%d ,%d”,sizeof(a),sizeof(int),sizeof(b),sizeof(float),sizeof(d ouble);2.4運算符和表達式運算符和表達式運行結(jié)果: a是整型變量所占字節(jié)數(shù)為2,int是整型變量的基數(shù)據(jù)類型所占字節(jié)數(shù)2,b是實型單精度變量所占字節(jié)數(shù)4,float是實型單精度變量類型所占字節(jié)數(shù)4,double是實型雙精度類型所占字節(jié)數(shù)8。2.5數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換 變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種,一種是自動轉(zhuǎn)換,一種是強制轉(zhuǎn)換。 1.自動轉(zhuǎn)換自動轉(zhuǎn)換 自動轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運算時,由編譯系統(tǒng)自動完成。自動轉(zhuǎn)換遵循以下規(guī)則如圖2.1: 1若參與運算量的類型不同,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論