第二章數(shù)據(jù)類型_第1頁
第二章數(shù)據(jù)類型_第2頁
第二章數(shù)據(jù)類型_第3頁
第二章數(shù)據(jù)類型_第4頁
第二章數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二章l 本章要點(diǎn)本章要點(diǎn)l 主要內(nèi)容主要內(nèi)容2.1 2.1 基本數(shù)據(jù)類型與常數(shù)的表示基本數(shù)據(jù)類型與常數(shù)的表示2.2 2.2 變量與內(nèi)存變量與內(nèi)存2.3 2.3 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式2.4 2.4 輸入輸出函數(shù)輸入輸出函數(shù) 2.1 基本數(shù)據(jù)類型與常數(shù)的表示基本數(shù)據(jù)類型與常數(shù)的表示2.1.1 2.1.1 基本數(shù)據(jù)類型基本數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。 2.1.2 常量和符號常量常量和符號常量 在程序運(yùn)行過程中,其值不能被改變的量稱為常量 常量區(qū)分為不同的類型:整型 100,-100,0,010,0 x12實(shí)型 3.14,0.125,.5,-1.5,1.75e4字符型 a,?,2,

2、 n字符串 “a”,“C程序”,“1232”整型常量按原樣輸出整型常量按原樣輸出實(shí)型實(shí)型( (浮點(diǎn)型浮點(diǎn)型) )常量的表示方法常量的表示方法兩種表兩種表示形式示形式小數(shù)小數(shù)指數(shù)指數(shù)0.1230.1233e-33e-3注意注意: :字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù) 規(guī)范化的指數(shù)形式:規(guī)范化的指數(shù)形式: 在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字. 例如例如: : 123.456可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.

3、23456e31.23456e3稱為“規(guī)范化的指數(shù)形式”。字符常量字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符a,A, 1a,A, 1abcabc、“a”a” 有些以有些以“”開頭的特殊字符稱為轉(zhuǎn)義字符開頭的特殊字符稱為轉(zhuǎn)義字符n 換行,將當(dāng)前位置移到下一行開頭t 橫向跳格r 回車,將當(dāng)前位置移到本行開頭b 退格,將當(dāng)前位置移到前一列 反斜杠ddd ddd表示1到3位八進(jìn)制數(shù)字xhh hh表示1到2位十六進(jìn)制數(shù)字【例】【例】2.1 幾個常數(shù)的輸出例例 轉(zhuǎn)義字符舉例轉(zhuǎn)義字符舉例#include #include voidvoid main()main() printf(

4、101 x42 Cn); printf(101 x42 Cn); printf(I say:How are you?n); printf(I say:How are you?n); printf(C Programn); printf(C Programn); printf(Turbo C); printf(Turbo C); 運(yùn)行結(jié)果:(屏幕顯示)A B CIsay:”How are you?”C ProgramTurbo C運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:例 main() printf(“Yb=n”); 字符串常量字符串常量 字符串常量是一對雙撇號括起來的字符序列. 合法的字符串常量:“

5、How do you do.”, “CHINA”, “a” , “$123.45” 可以輸出一個字符串,如printf(“How do you do.”); 是字符常量,”是字符串常量,二者不同。 如:如:假設(shè)c被指定為字符變量 :char c c=a; ”a”;c”CHINA”;結(jié)論:結(jié)論:不能把一個字符串常量賦給一個字符變量。不能把一個字符串常量賦給一個字符變量。 規(guī)定:在每一個字符串常量的結(jié)尾加一個規(guī)定:在每一個字符串常量的結(jié)尾加一個 “ “字字符符串結(jié)束標(biāo)志串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。規(guī)定以字符規(guī)定以字符作為字符串結(jié)束標(biāo)志。作為字符串

6、結(jié)束標(biāo)志。 如:如:如果有一個字符串常量” ,實(shí)際上在內(nèi)存中是:CHINA0 它占內(nèi)存單元不是個字符,而是個字符,最后一個字符為。但在輸出時不輸出。作用:作用:用于給程序中的各元素(常量、變量、函數(shù)等)標(biāo)示類型和命名。定義:字母或下劃線開頭的字母、數(shù)字、下劃線組成的字串。定義:字母或下劃線開頭的字母、數(shù)字、下劃線組成的字串。例如:ab, sum1, _12x, y_1, t_12 等都是C語言允許的標(biāo)識符。 5gb, tr, ddp#, li yi, ab+cd等都不是C語言的標(biāo)識符 標(biāo)識符長度無統(tǒng)一規(guī)定,一般只識別前8個字符。 在C語言中,標(biāo)識符對字母的大小寫是有區(qū)分大小寫是有區(qū)分(敏感)的

7、。例如:count、COUNT和Count被認(rèn)為是三個不同的標(biāo)識符。2. 關(guān)鍵字關(guān)鍵字 即系統(tǒng)已使用的標(biāo)識符。保留給系統(tǒng)使用,用戶不能使用。2.2 變量與內(nèi)存變量與內(nèi)存例:判斷下列標(biāo)識符號合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123例例 符號常量的使用符號常量的使用#define PRICE 30#define PRICE 30#include #include void main ( )void main ( ) int num, total;int num, total

8、; num=10;num=10; total=num total=num * * PRICE; PRICE; printf(total=%dn,total);printf(total=%dn,total); 程序中用程序中用#define#define命令行定義命令行定義PRICEPRICE代表常量代表常量30,30,此后凡在本此后凡在本文件中出現(xiàn)的文件中出現(xiàn)的PRICEPRICE都代表都代表30,30,可以和常量一樣進(jìn)行運(yùn)算可以和常量一樣進(jìn)行運(yùn)算用一個標(biāo)識符代表一個常量的用一個標(biāo)識符代表一個常量的, ,稱為符號常量稱為符號常量, ,即以標(biāo)識符形式即以標(biāo)識符形式出現(xiàn)的常量。符號常量的值在其作用

9、域出現(xiàn)的常量。符號常量的值在其作用域( (在本例中為主函數(shù)在本例中為主函數(shù)) )內(nèi)不內(nèi)不能改變能改變, ,也不能再被賦值。也不能再被賦值。 如再用賦值語句給如再用賦值語句給PRICEPRICE賦值是錯誤的。賦值是錯誤的。 PRICE=40;PRICE=40; / /* * 錯誤,不能給符號常量賦值。錯誤,不能給符號常量賦值。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: total=300total=300 2.2 變量與內(nèi)存變量與內(nèi)存2.2.2變量的定義與初始化變量的定義與初始化 變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。 變量名實(shí)際上是一個以一個

10、名字對應(yīng)代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。 變量的命名規(guī)則遵循標(biāo)識符的命名規(guī)則 (1)變量定義的一般格式: 存儲類型 數(shù)據(jù)類型 變量名,變量名2; 例如: float radius, length, area; (2)變量初始化的一般格式: 存儲類型 數(shù)據(jù)類型 變量名初值1,變量名2初值2; 例如: float radius2.5, length, area; 不允許連續(xù)賦值:如 int a=b=5; 變量定義原理編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元.地址int a=

11、1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內(nèi)存1-3隨機(jī)數(shù)整型變量整型變量 (1)(1)整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。 如如: : int i; /* 定義為整型變量 */ i=10; /* 給i賦以整數(shù)10 */ (2) (2)整型變量的分類:整型變量的分類:共六種共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed) int (signed) short (int )(signed) long (int)unsigned intunsigned short (int)unsig

12、ned long (int) 注意:注意:括號表示其中的內(nèi)容是可選的括號表示其中的內(nèi)容是可選的. . ANSI C標(biāo)準(zhǔn)定義的整數(shù)類型:例例 整型變量的定義與使用整型變量的定義與使用#include #include void main()() int a,b,c,d; / /*指定、指定、b、c、d為整型變量為整型變量* unsigned ; *指定為無符號整型變量指定為無符號整型變量* 12;-24;10; ; printf(,);,); 可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算 運(yùn)行結(jié)果:運(yùn)行結(jié)果: , 例例 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出#include #include void ma

13、in()void main()int a,b; int a,b; a=32767; a=32767; b=a+1; b=a+1; printf(“%d,%dn”,a,b); printf(“%d,%dn”,a,b); 數(shù)值是以補(bǔ)碼表示的。一個整型變量只能容納-3276832767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運(yùn)行結(jié)果:運(yùn)行結(jié)果: 32767,-3276832767,-32768實(shí)型實(shí)型(浮點(diǎn)型浮點(diǎn)型)變量變量(1)(1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式 一個浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。(2) (2) 浮

14、點(diǎn)型變量的分類浮點(diǎn)型變量的分類 浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長雙精度型(long double)三類形式。例例 浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差#include #include void main()void main()float a,b;float a,b; a = 123456.789e5; a = 123456.789e5; b = a + 20 ; b = a + 20 ; printf(“%fn”,b); printf(“%fn”,b); 一個浮點(diǎn)型變量只能保證的有效數(shù)字是一個浮點(diǎn)型變量只能保證的有效數(shù)字是7 7位有效數(shù)字,后面的數(shù)字是

15、無位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會直接相加或相減,否則就會“丟失丟失”小的數(shù)小的數(shù)運(yùn)行結(jié)果:運(yùn)行結(jié)果: 123456.789e5123456.789e5【例】【例】2.3 字符變量字符變量 字符型變量用來存放字符常量,注意只能放一個字符。 字符變量的定義形式如下:char c1,c2; 在本函數(shù)中可以用下面語句對c1,c2賦值: c1a;c2 b ; 一個字符變量在內(nèi)存中占一個字節(jié)。 字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲形式及

16、其使用方法 將一個字符常量放到一個字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。例例 向字符變量賦以整數(shù)。向字符變量賦以整數(shù)。 #include #include void main()void main() char c1,c2; char c1,c2; c1=97; c1=97; c2=98; c2=98; printf(“%c %cn”,c1,c2); printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1

17、,c2); printf(“%d %dn”,c1,c2); 在第和第在第和第4 4行中,將整數(shù)和分別賦給行中,將整數(shù)和分別賦給c1c1和和c2c2,它的作用相,它的作用相當(dāng)于以下兩個賦值語句:當(dāng)于以下兩個賦值語句:c1c1;c2c2;因為因為aa和和bb的的ASCIIASCII碼為和碼為和運(yùn)行結(jié)果:運(yùn)行結(jié)果: 97 9897 98【例】【例】2.4 例例 大小寫字母的轉(zhuǎn)換大小寫字母的轉(zhuǎn)換 #include #include void main()void main() char c1,c2 char c1,c2; c1=a;c1=a; c2=b; c2=b; c1=c1-32; c1=c1-3

18、2; c2=c2-32; c2=c2-32; printf(“ printf(“c c cc,c1,c2c1,c2);); 程序的作用是將兩個小寫字母程序的作用是將兩個小寫字母a a和和b b轉(zhuǎn)換成大寫字母轉(zhuǎn)換成大寫字母A A和和B B。從。從代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的碼大。語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。碼大。語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: 【例】【例】2.5 2.3運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式的運(yùn)算符有以下幾類:的運(yùn)算符有以下幾類:(1)(1)算術(shù)運(yùn)算符算術(shù)運(yùn)算符 (+ - +

19、 - * * / % / %)(2)(2)關(guān)系運(yùn)算符關(guān)系運(yùn)算符 ( ! !)(3)(3)邏輯運(yùn)算符邏輯運(yùn)算符 (!(! |)(4)(4)賦值運(yùn)算符賦值運(yùn)算符 ()()(5)(5)條件運(yùn)算符條件運(yùn)算符 (?:)(?:)(6)(6)逗號運(yùn)算符逗號運(yùn)算符 ( (,),)(7)(7)指針運(yùn)算符指針運(yùn)算符 (* *和)和)(8)(8)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(強(qiáng)制類型轉(zhuǎn)換運(yùn)算符( ( (類型)類型) ) )(9)(9)下標(biāo)運(yùn)算符()下標(biāo)運(yùn)算符()2.3.1 算術(shù)運(yùn)算符與算術(shù)表達(dá)式算術(shù)運(yùn)算符與算術(shù)表達(dá)式 (1)(1)基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符: : (加法運(yùn)算符,或正值運(yùn)算符。如:、) (減法運(yùn)算符,或負(fù)

20、值運(yùn)算符。如:、)* * (乘法運(yùn)算符。如:*) (除法運(yùn)算符。如:) (模運(yùn)算符,或稱求余運(yùn)算符,兩側(cè)均應(yīng)為整型數(shù)據(jù),如:的值為)。(2) (2) 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性: : 用算術(shù)運(yùn)算符和括號將運(yùn)算對象用算術(shù)運(yùn)算符和括號將運(yùn)算對象( (也稱操作數(shù))也稱操作數(shù))連接起來的、符合語法規(guī)則的式子,稱為算術(shù)表連接起來的、符合語法規(guī)則的式子,稱為算術(shù)表達(dá)式。運(yùn)算對象包括常量、變量、函數(shù)等。達(dá)式。運(yùn)算對象包括常量、變量、函數(shù)等。 例如例如: : * *.5.5aa 是一個合法的表達(dá)式是一個合法的表達(dá)式語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。 在表達(dá)式求值時,先

21、按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。 規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性) 算術(shù)運(yùn)算符的結(jié)合方向為“自左至右”,即先左后右 ?!纠俊纠?.6 (3) (3) 數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換: : 在語言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算(因為字符數(shù)據(jù)與整型數(shù)據(jù)可以通用)。 如果一個運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運(yùn)算。較低類型向較高類型轉(zhuǎn)換。 類型級別的高低:字符型 整型 單精度實(shí)型 雙精度實(shí)型(4) (4) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:強(qiáng)制類型轉(zhuǎn)換運(yùn)算符: 除自動轉(zhuǎn)換外,C語言可以利用強(qiáng)制類型

22、轉(zhuǎn)換運(yùn)算符將一個表達(dá)式轉(zhuǎn)換成所需類型。 一般形式:(類型名)(表達(dá)式)例如:例如:(double) 將轉(zhuǎn)換成將轉(zhuǎn)換成double類型類型 (float)(5%3) 將將5%3的值轉(zhuǎn)換成的值轉(zhuǎn)換成float型型從高類型到低類型的轉(zhuǎn)換會發(fā)生存儲字節(jié)的減少,從從高類型到低類型的轉(zhuǎn)換會發(fā)生存儲字節(jié)的減少,從而可能會發(fā)生數(shù)據(jù)的截斷所造成的數(shù)據(jù)損害。而可能會發(fā)生數(shù)據(jù)的截斷所造成的數(shù)據(jù)損害。例 強(qiáng)制類型轉(zhuǎn)換。 #include #include void mainvoid main()()float xfloat x; int iint i; x=3.6;x=3.6; i=(int)x; i=(int)x;

23、 printf(x=%f printf(x=%f, i=%dni=%dn,x x,i);i); 有兩種類型轉(zhuǎn)換,一種是在運(yùn)算時不必用戶指定,系統(tǒng)自動進(jìn)行的有兩種類型轉(zhuǎn)換,一種是在運(yùn)算時不必用戶指定,系統(tǒng)自動進(jìn)行的類型轉(zhuǎn)換,如類型轉(zhuǎn)換,如3+6.53+6.5。第二種是強(qiáng)制類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實(shí)現(xiàn)目。第二種是強(qiáng)制類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實(shí)現(xiàn)目的時,可以用強(qiáng)制類型轉(zhuǎn)換。的時,可以用強(qiáng)制類型轉(zhuǎn)換。運(yùn)行結(jié)果:運(yùn)行結(jié)果: x3.600000, i=3(4)(4) 自增、自減運(yùn)算符自增、自減運(yùn)算符 作用是使變量的值增或減如如:+i,-i(在使用之前,先使的值加/減) i+,i-(在使用之后,使的

24、值加/減) i+與與+i的區(qū)別:的區(qū)別: 是先執(zhí)行后,再使用的值; 是先使用的值后,再執(zhí)行。例如:例如:若若i的初值為的初值為3 ; i的值先變成的值先變成4, 再賦給再賦給, j的值均為的值均為 ; 先將先將 i的值的值3賦給賦給,的值為,然后變?yōu)榈闹禐椋缓笞優(yōu)樽⒁猓鹤⒁猓?(1)(1)自增運(yùn)算符(),自減運(yùn)算符(),只能用自增運(yùn)算符(),自減運(yùn)算符(),只能用于變量,而不能用于常量或表達(dá)式,于變量,而不能用于常量或表達(dá)式, (2)(2)和的結(jié)合方向是和的結(jié)合方向是“自右至左自右至左”?!纠俊纠?.9 (5) (5) 有關(guān)表達(dá)式使用中的問題說明有關(guān)表達(dá)式使用中的問題說明 ANSI C并

25、沒有具體規(guī)定表達(dá)式中的子表達(dá)式的求值順序,允許各編譯系統(tǒng)自己安排。 例如:對表達(dá)式 a = f1( )+f2( ) 并不是所有的編譯系統(tǒng)都先調(diào)用f1( ), 然后調(diào)用f2( )。在有的情況下結(jié)果可能不同。有時會出現(xiàn)一些令人容易搞混的問題,因此務(wù)必要小心謹(jǐn)慎。 語言中有的運(yùn)算符為一個字符,有的運(yùn)算符由兩個字符組成為避免誤解,最好采取大家都能理解的寫法。 例如:不要寫成i+j的形式,而應(yīng)寫成 (i+)+j的形式 在調(diào)用函數(shù)時,實(shí)參數(shù)的求值順序,標(biāo)準(zhǔn)并無統(tǒng)一規(guī)定。例如:例如:的初值為,如果有下面的函數(shù)調(diào)用: printf(,i+) 在有的系統(tǒng)中,從左至右求值,輸出“,”。在多數(shù)系統(tǒng)中對函數(shù)參數(shù)的求值

26、順序是自右而左,printf函數(shù)輸出的是“,”。以上這種寫法不宜提倡, 最好改寫成 j = i+;j = i+; printf(%d printf(%d, %d%d, j j,i)i)不要寫出別人看不懂的也不知道系統(tǒng)會怎樣執(zhí)行程序 2.3.2 賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符與賦值表達(dá)式 (1)(1)賦值運(yùn)算符賦值運(yùn)算符 賦值符號“”就是賦值運(yùn)算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如“”的作用是執(zhí)行一次賦值操作(或稱賦值運(yùn)算)。把常量賦給變量。也可以將一個表達(dá)式的值賦給一個變量. (2)(2)類型轉(zhuǎn)換類型轉(zhuǎn)換 如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時,在賦值時要進(jìn)行類型轉(zhuǎn)換。例

27、如:將浮點(diǎn)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,舍棄浮點(diǎn)數(shù)的小數(shù)部分。如如: :為整型變量,執(zhí)行“i=3.56”的結(jié)果是使的值為,以整數(shù)形式存儲在整型變量中. 將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲到變量中 如如: : 將賦給float變量,即執(zhí)行,先將轉(zhuǎn)換成,再存儲在中。 將賦給型變量,即執(zhí)行,則將補(bǔ)足有效位數(shù)字為,然后以雙精度浮點(diǎn)數(shù)形式存儲到變量中。 【例】【例】2.7 (3) (3) 復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符 在賦值符“”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。例如例如: 等價于 * 等價于 *() 等價于 以“”為例來說明,它相當(dāng)于使進(jìn)行一次自加()的

28、操作。即先使加,再賦給。注意注意: :如果是包含若干項的表達(dá)式,則相當(dāng)于它有如果是包含若干項的表達(dá)式,則相當(dāng)于它有 括號。括號。如:如: x %= y+3 x %= y+3 x = x %(y+3)( x = x %(y+3)(不要錯寫成不要錯寫成x=x%y+3)x=x%y+3)凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。 (4) (4) 賦值表達(dá)式賦值表達(dá)式 由賦值運(yùn)算符將一個變量和一個表達(dá)式連接起來的式子稱為“賦值表達(dá)式”。一般形式為一般形式為: 例如例如: “5”是一個賦值表達(dá)式 對賦值表達(dá)式求解的過程是:對賦值表達(dá)式求解的過程是: 求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值; 賦

29、給賦值運(yùn)算符左側(cè)的變量。例如例如: 賦值表達(dá)式“=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。 注意注意: : 一個表達(dá)式應(yīng)該有一個值一個表達(dá)式應(yīng)該有一個值 賦值表達(dá)式中的“表達(dá)式”,又可以是一個賦值表達(dá)式.例如例如: : a=(b=5) 分析分析: :括弧內(nèi)的“b=5”是一個賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)”相當(dāng)于執(zhí)行“b=5”和“ab”兩個賦值表達(dá)式。 賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“(b5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價.請分析下面的賦值表達(dá)式(a=3*5)=4*3分析分析: :先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,

30、然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個表達(dá)式的值為12。注意注意: :在對賦值表達(dá)式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時,實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5。賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。 如:如:a+=a-=a*a a的初值為12分析分析: :此賦值表達(dá)式的求解步驟如下 先進(jìn)行“*”的運(yùn)算, 它相當(dāng)于*,a的值為144132。再進(jìn)行“”的運(yùn)算,相當(dāng)于=a+(-132),a的值為132-132-264。 將賦值表達(dá)式作為表達(dá)式的一種,使賦值操作不僅可以出現(xiàn)在賦值語句中,而且可以以表達(dá)式形式出現(xiàn)在其他語句(如輸

31、出語句、循環(huán)語句等)中. 如:如:printf(%d,a=b); 分析分析: :如果b的值為3, 則輸出a的值(也是表達(dá)式a=b的值)為3。在一個語句中完成了賦值和輸出雙重功能。2.3.3 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符逗號運(yùn)算符: :將兩個表達(dá)式連接起來,又稱為“順序求值運(yùn)算符” 如:如:5, 一般形式一般形式: : 表達(dá)式,表達(dá)式表達(dá)式,表達(dá)式求解過程:求解過程: 先求解表達(dá)式,再求解表達(dá)式。整個逗號表達(dá)式的值是表達(dá)式的值。 逗號表達(dá)式 的值為14 2.3.3 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式例:例:逗號表達(dá)式*5,* 分析分析: :賦值運(yùn)算符的優(yōu)先級別

32、高于逗號運(yùn)算符, 因此應(yīng)先求解*5.的值為5,然后求解*,得。整個逗號表達(dá)式的值為。 一個逗號表達(dá)式又可以與另一個表達(dá)式組成一一個逗號表達(dá)式又可以與另一個表達(dá)式組成一個新的逗號表達(dá)式個新的逗號表達(dá)式 如如: :(*,*),a+5 先計算出的值等于,再進(jìn)行*的運(yùn)算得60(但值未變,仍為15),再進(jìn)行得,即整個表達(dá)式的值為。 2.3.3 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式逗號表達(dá)式的一般形式可以擴(kuò)展為 表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式 它的值為表達(dá)式的值。逗號運(yùn)算符是所有運(yùn)算符中級別最低的例例: : (,*) ,*3賦值表達(dá)式,將一個逗號表達(dá)式的值賦給,的值

33、等于 逗號表達(dá)式,包括一個賦值表達(dá)式和一個算術(shù)表達(dá)式,的值為,整個逗號表達(dá)式的值為18。 注意注意: :并不是任何地方出現(xiàn)的逗號都是作為逗號運(yùn)算符。例如函數(shù)參數(shù)也是用逗號來間隔的。 如如: printf(“%d,%d,%d”,a,b,c);“,”并不是一個逗號表達(dá)式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c) ;“(,)”是一個逗號表達(dá)式,它的值等于的值。 2.3.3 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式2.3.4 條件運(yùn)算符和表達(dá)式條件運(yùn)算符和表達(dá)式 一般形式:一般形式: expr1 ? expr2 : expr3 執(zhí)行過程執(zhí)行過程 功

34、能:相當(dāng)于條件語句,但不能取代一般功能:相當(dāng)于條件語句,但不能取代一般if語句語句expr1取expr2值取expr3值非0=0例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c0?1:(xb?a:cd?c:d ab?a:(cd?c:d) expr1、expr2、expr3類型可不同,表達(dá)式值取較高的類型例 x?a:b /x=0,表達(dá)式值為b; x

35、0,表達(dá)式值為a xy?1:1.5 /xy ,值為1.0; xy ,值為1.52.3.5 常用數(shù)學(xué)函數(shù)常用數(shù)學(xué)函數(shù) (1)頭文件包含 #include 例如: #include #include (2)函數(shù)原型int abs(int x) double fabs(double x)double sqrt(double x) double pow(double x,double y) (3)參數(shù)的定義域【例】【例】2.81.優(yōu)先級 高 括號、成員運(yùn)算符 () 單目運(yùn)算 算術(shù)運(yùn)算 關(guān)系運(yùn)算 邏輯運(yùn)算(除 ! 外) 條件運(yùn)算 賦值運(yùn)算 低 逗號運(yùn)算2. 結(jié)合性 指運(yùn)算數(shù)與運(yùn)算符的結(jié)合方向. (見(見

36、208頁)頁)2.3.6 優(yōu)先級與結(jié)合性優(yōu)先級與結(jié)合性2.4 數(shù)據(jù)輸入數(shù)據(jù)輸入/輸出輸出(I/O) 2.4.1 printf輸出函數(shù)輸出函數(shù) .格式輸出函數(shù)格式輸出函數(shù) printf ( ) 格式: printf( “ 格式控制字串格式控制字串 ” , 輸出項表輸出項表) 輸出項輸出項: 常量常量|變量變量|表達(dá)式表達(dá)式 格式控制說明符,規(guī)定用%打頭,其后跟上一個符合規(guī)定的 字母,不同的字母的含義不一樣。常用的有: %d 按十進(jìn)制整數(shù)輸出 %o 按八進(jìn)制輸出 %f 按數(shù)據(jù)實(shí)型輸出 %c 輸出單個字符【例】 注意:注意:輸出項的個數(shù)要與格式說明符的個數(shù)相同個數(shù)相同,輸出項與對應(yīng)的格式說明符的類型

37、必須一致類型必須一致。如果沒有輸出項表,就不要有格式控制字符串; 如: printf(“ hello world !”); int a=4;float b=5.4;printf(“a=%d,b=%f,a*b=%f”,a,b,a*b);【例】【例】2.10【例】【例】2.112.4. 2 scanf格式輸入函數(shù)格式輸入函數(shù) 格式格式: scanf ( “格式控制字串格式控制字串 ” , 輸入地址表輸入地址表) 輸入地址表項輸入地址表項: &變量名變量名|數(shù)組名數(shù)組名 ( a ) 格式控制說明符: 規(guī)定用%打頭,其后跟上一個符合規(guī) 定的字母,不同的字母的含義不一樣,常用的有: %d 按十進(jìn)制整數(shù)輸入 %o 按八進(jìn)制輸入 %f 按實(shí)型數(shù)據(jù)輸入 %c 輸入單個字符 注意:注意:格式控制字符串中一般不包含普通字符,輸入多個數(shù)據(jù)中間用空格(或跳格和回車符)作為輸入數(shù)據(jù)的間隔。 (b)輸入項表輸入項表 輸入項表格項之間用逗號逗號隔開,輸入項必須是變量的地址輸入項必須是變量的地址。這可以在變量名前加 取地址運(yùn)算符取地址運(yùn)算符 & ,輸入項的個數(shù)要與格式說明符的個

溫馨提示

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

最新文檔

評論

0/150

提交評論