版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、3.1 C3.1 C的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型3.2 3.2 常量與變量常量與變量3.3 3.3 整型數(shù)據(jù)整型數(shù)據(jù)3.4 3.4 浮點(diǎn)型數(shù)據(jù)運(yùn)行浮點(diǎn)型數(shù)據(jù)運(yùn)行3.5 3.5 字符型數(shù)據(jù)字符型數(shù)據(jù) 3. 3.變量賦初值變量賦初值 3.7 3.7 各類(lèi)數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類(lèi)數(shù)值型數(shù)據(jù)間的混合運(yùn)算 3.8 3.8 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 3.9 3.9 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式 3.10 3.10 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 5C語(yǔ)言提供了以下一些數(shù)據(jù)類(lèi)型。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(
2、第三版) http:/ 63.2.1 常量和符號(hào)常量常量和符號(hào)常量 在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量 常量區(qū)分為不同的類(lèi)型:整型 100,125,-100,0實(shí)型 3.14 , 0.125,-3.789字符型 a, b,2字符串 a, ab,1232C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 7用一個(gè)標(biāo)識(shí)符代表一個(gè)常量。符號(hào)常量的值在其作用域內(nèi)不能改變,也不能再被賦值。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: total=300total=300 程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算如再用賦值語(yǔ)句給PRI
3、CE賦值是錯(cuò)的 PRICE=40;/* 錯(cuò)誤,不能給符號(hào)常量賦值C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 83.2.2變量變量 變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來(lái)存放數(shù)據(jù),這就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。 變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址,在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 9 變量命名的規(guī)定:語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。 例:
4、例:sum,_total, month, Student_name, lotus_1_2_,BASIC, li_ling M.D.John, ¥123,3D64,ab C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 10 編譯系統(tǒng)將大寫(xiě)字母和小寫(xiě)字母認(rèn)為是兩個(gè)不同的字符。 建議變量名的長(zhǎng)度最好不要超過(guò)8個(gè)字符。 在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見(jiàn)名知意”,即選有含意的英文單詞 (或其縮寫(xiě))作標(biāo)識(shí)符。 要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用” 。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 113.3.1整型常量的表示方法整型常量的表示方法 整型常量即整常數(shù)
5、。在語(yǔ)言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。 如:如:123, -456.4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。 如:如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 12(3)十六進(jìn)制整數(shù)。以0 x開(kāi)頭的數(shù)是16進(jìn)制數(shù)。 如:如:0 x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù) 291。 -0 x12等于十進(jìn)制數(shù)10。 3.3.2 整型變量整型變量 (1)(1)整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。 如如: : int i;
6、/* 定義為整型變量 */ i=10; /* 給i賦以整數(shù)10 */ C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 13 十進(jìn)制數(shù)10的二進(jìn)制形式為1010,Turbo C 2.0和Turbo C+ 3.0為一個(gè)整型變量在內(nèi)存中分配2個(gè)字節(jié)的存儲(chǔ)單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC+ 6.0則分配4個(gè)字節(jié))。 數(shù)值是以補(bǔ)碼(complement) 表示的。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 14(2)(2)整型變量的分類(lèi)整型變量的分類(lèi)共六種共六種有符號(hào)基本整型有符號(hào)短整型有符號(hào)長(zhǎng)整型無(wú)符號(hào)基本整型無(wú)符號(hào)短整型無(wú)符號(hào)長(zhǎng)整型(signed)int
7、(signed)short (int )(signed) long (int)unsigned intunsigned short (int)unsigned long (int) 注意:注意:括號(hào)表示其中的內(nèi)容是可選的.C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 15 整數(shù)類(lèi)型的有關(guān)數(shù)據(jù):C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 16例如:整數(shù)13在內(nèi)存中實(shí)際存放的情況:C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 17(3)(3)整型變量的定義整型變量的定義: : 規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強(qiáng)制類(lèi)型定義”。 例如例如: : int a,
8、bint a,b(指定變量、為整型) unsigned short c,d;unsigned short c,d;(指定變量、為無(wú)符號(hào)短整型) long e,f;long e,f;(指定變量、為長(zhǎng)整型)C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 18 可以看到不同種類(lèi)的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算 運(yùn)行結(jié)果:運(yùn)行結(jié)果: , C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 19數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-3276832767范圍內(nèi)的數(shù),無(wú)法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運(yùn)行結(jié)果:運(yùn)行結(jié)果: 32767,-3276832767,-327
9、68C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 203.3.3 整型常量的類(lèi)型整型常量的類(lèi)型 (1)一個(gè)整數(shù),如果其值在-32768+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和long int型變量。 (2) 一個(gè)整數(shù),如果其值超過(guò)了上述范圍,而在-2147483637+2147483647范圍內(nèi),則認(rèn)為它是為長(zhǎng)整型??梢詫⑺x值給一個(gè)long int型變量。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 21(3) 如果所用的C版本(如Turbo C)分配給short int與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,則它的表數(shù)范圍與int型相同。因此一個(gè)int型
10、的常量同時(shí)也是一個(gè)short int型常量,可以賦給int型或short int型變量。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 22(4) 一個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsigned int型,如12345u,在內(nèi)存中按unsigned int規(guī)定的方式存放(存儲(chǔ)單元中最高位不作為符號(hào)位,而用來(lái)存儲(chǔ)數(shù)據(jù))。如果寫(xiě)成-12345u,則先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后按無(wú)符號(hào)數(shù)存儲(chǔ)。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 23(5) 在一個(gè)整常量后面加一個(gè)字母l或L,則認(rèn)為是long int型常量。 例如: 123l.432L.0L 用于函數(shù)調(diào)用
11、中。 如果函數(shù)的形參為long int型,則要求實(shí)參也為long int型。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ .1浮點(diǎn)型常量的表示方法浮點(diǎn)型常量的表示方法兩種表兩種表示形式示形式小數(shù)小數(shù)指數(shù)指數(shù)0.1230.1233e-33e-3注意注意: :字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù) C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 25規(guī)范化的指數(shù)形式:規(guī)范化的指數(shù)形式: 在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字. 例如例如: : 123.456可以表示為: 123.456e0, 12.3456e
12、1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e31.23456e3稱(chēng)為“規(guī)范化的指數(shù)形式”。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 263.4.2 浮點(diǎn)型變量浮點(diǎn)型變量(1)(1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式 一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 27(2) (2) 浮點(diǎn)型
13、變量的分類(lèi)浮點(diǎn)型變量的分類(lèi) 浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(long double)三類(lèi)形式。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 28一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)運(yùn)行結(jié)果:運(yùn)行結(jié)果: 123456.789e5123456.789e5C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 293.4.3 浮點(diǎn)型常量的類(lèi)型浮點(diǎn)型常量的類(lèi)型 C編譯系統(tǒng)將浮點(diǎn)型常量作為雙精度來(lái)處理。 例如例如:f = 2.4
14、5678 * 4523.65 系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進(jìn)行相乘的運(yùn)算,得到的乘也是一個(gè)雙精度數(shù)。最后取其前7位賦給浮點(diǎn)型變量f。如是在數(shù)的后面加字母f或F(如1.65f, 654.87F),這樣編譯系統(tǒng)就會(huì)把它們按單精度(32位)處理。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 303.5.1 字符常量字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符a,A, 1a,A, 1abcabc、“a”a”C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 31 有些以有些以“”開(kāi)頭的特殊字符稱(chēng)為轉(zhuǎn)義字符開(kāi)頭的特殊字符稱(chēng)為轉(zhuǎn)義字符n 換行
15、t 橫向跳格r 回車(chē) 反斜杠ddd ddd表示1到3位八進(jìn)制數(shù)字xhh hh表示1到2位十六進(jìn)制數(shù)字C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 32 打印機(jī)上的顯示結(jié)果:打印機(jī)上的顯示結(jié)果: fab c gde h jik 顯示屏上顯示屏上的運(yùn)行結(jié)果:的運(yùn)行結(jié)果: f gde j kC程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 333.5.2字符變量字符變量 字符型變量用來(lái)存放字符常量,注意只能放一個(gè)字符。 字符變量的定義形式如下:char c1,c2; 在本函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2賦值: c1a;c2 b ; 一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。 C程序設(shè)計(jì)(第三版)程
16、序設(shè)計(jì)(第三版) http:/ 343.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意: 一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 35在第和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句: c1;c2; 因?yàn)閍和b的ASCII碼為97和98 運(yùn)行結(jié)果:運(yùn)行結(jié)果: 97 9897 98C程序設(shè)
17、計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 36程序的作用是將兩個(gè)小寫(xiě)字母a和b轉(zhuǎn)換成大寫(xiě)字母A和B。從代碼表中可以看到每一個(gè)小寫(xiě)字母比它相應(yīng)的大寫(xiě)字母的ASCII碼大32。語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 37 有些系統(tǒng)(如Turbo C)將字符變量定義為signed char型。其存儲(chǔ)單元中的最高位作為符號(hào)位,它的取值范圍是-128127。如果在字符變量中存放一個(gè)ASCII碼為0127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時(shí),輸出的是一個(gè)正整數(shù)。如果在字符變量中存放一個(gè)ASCII碼為128
18、255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時(shí),就會(huì)得到一個(gè)負(fù)整數(shù)。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 383.5.4字符串常量字符串常量 字符串常量是一對(duì)雙撇號(hào)括起來(lái)的字符序列. 合法的字符串常量:“How do you do.”, “CHINA”, “a” , “$123.45” 可以輸出一個(gè)字符串,如printf(“How do you do.”);C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 39 是字符常量,”是字符串常量,二者不同。 如:如:假設(shè)被指定為字符變量 :char c c=a; ”a”;c”CHINA”; 結(jié)論:結(jié)論:不能把一個(gè)字符
19、串常量賦給一個(gè)字符變量。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 40 規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè) “字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。規(guī)定以字符作為字符串結(jié)束標(biāo)志。 如:如:如果有一個(gè)字符串常量” ,實(shí)際上在內(nèi)存中是:CHINA0 它占內(nèi)存單元不是個(gè)字符,而是個(gè)字符,最后一個(gè)字符為。但在輸出時(shí)不輸出。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 41字符串常量(1)語(yǔ)言允許在定義變量的同時(shí)使變量初始化如如: : int a=3; / 指定為整型變量,初值為 float f=3.56; / 指定為浮點(diǎn)型變量,初值為.56 char c= a; /
20、指定為字符變量,初值為a C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 42(2)可以使被定義的變量的一部分賦初值。 如如: : int a,b,c=5; 表示指定、為整型變量,但只對(duì)初始化,c的初值為(3)如果對(duì)幾個(gè)變量賦以同一個(gè)初值, 應(yīng)寫(xiě)成:int a=3,b=3,c=3; 表示、的初值都是。 不能寫(xiě)成 int a=b=c3; 注意:注意:初始化不是在編譯階段完成的而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦初值的,相當(dāng)于有一個(gè)賦值語(yǔ)句。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 43混合運(yùn)算:整型(包括int,short,long)、浮點(diǎn)型(包括float,double)可以混合
21、運(yùn)算。在進(jìn)行運(yùn)算時(shí),不同類(lèi)型的數(shù)據(jù)要先轉(zhuǎn)換成同一類(lèi)型,然后進(jìn)行運(yùn)算.說(shuō)明: 這種類(lèi)型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 443.8.1 運(yùn)算符簡(jiǎn)介運(yùn)算符簡(jiǎn)介 的運(yùn)算符有以下幾類(lèi):的運(yùn)算符有以下幾類(lèi):(1)算術(shù)運(yùn)算符 (+ - * / %)(2)關(guān)系運(yùn)算符 (?。?3)邏輯運(yùn)算符 (!|)(4)位運(yùn)算符 ( |)(5)賦值運(yùn)算符 (及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符 (?:)(7)逗號(hào)運(yùn)算符 (,)C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 45(8)指針運(yùn)算符 (*和)(9)求字節(jié)數(shù)運(yùn)算符()(10)強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符( (類(lèi)型) )(11
22、)分量運(yùn)算符(-)(12)下標(biāo)運(yùn)算符()(13)其他 (如函數(shù)調(diào)用運(yùn)算符()C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 463.8.2 算術(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ù)值運(yùn)算符。如:、)* * (乘法運(yùn)算符。如:*) (除法運(yùn)算符。如:) (模運(yùn)算符,或稱(chēng)求余運(yùn)算符,兩側(cè)均應(yīng)為整型數(shù)據(jù),如:的值為)。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 47(2) (2) 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性基算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性基本的算術(shù)運(yùn)算符本的算
23、術(shù)運(yùn)算符: : 用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合語(yǔ)法規(guī)則的式子,稱(chēng)為算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。 例如例如: : *.5a 是一個(gè)合法的表達(dá)式C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 48 語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。 在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。 規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性) 算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后?。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 49(3)(3)強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 可以利用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類(lèi)型。
24、 一般形式:(類(lèi)型名)(表達(dá)式)例如:例如:(double) 將轉(zhuǎn)換成double類(lèi)型(int)(x+y) 將x+y的值轉(zhuǎn)換成整型(float)(5%3) 將5%3的值轉(zhuǎn)換成float型C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 50有兩種類(lèi)型轉(zhuǎn)換,一種是在運(yùn)算時(shí)不必用戶(hù)指定,系統(tǒng)自動(dòng)進(jìn)行的類(lèi)型轉(zhuǎn)換,如3+6.5。第二種是強(qiáng)制類(lèi)型轉(zhuǎn)換。當(dāng)自動(dòng)類(lèi)型轉(zhuǎn)換不能實(shí)現(xiàn)目的時(shí),可以用強(qiáng)制類(lèi)型轉(zhuǎn)換。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: x3.600000, i=3C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 51(4)(4) 自增、自減運(yùn)算符自增、自減運(yùn)算符 作用是使變量的值增或減如如: ,(在使用之前
25、,先使的值加 (減),(在使用之后,使的值加( 減) C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 52i+i+與與+i+i的區(qū)別:的區(qū)別: 是先執(zhí)行后,再使用的值; 是先使用的值后,再執(zhí)行。例如:例如: ; i的值先變成4, 再賦給,j的值均為 ; 先將 i的值3賦給,的值為,然后變?yōu)镃程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 53注意:注意: (1)自增運(yùn)算符(),自減運(yùn)算符(),只能用于變量,而不能用于常量或表達(dá)式, (2)和的結(jié)合方向是“自右至左”。 自增(減)運(yùn)算符常用于循環(huán)語(yǔ)句中使循環(huán)變量自動(dòng)加。也用于指針變量,使指針指向下一個(gè)地址 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(
26、第三版) http:/ 54(5) (5) 有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明 ANSI C并沒(méi)有具體規(guī)定表達(dá)式中的子表達(dá)式的求值順序,允許各編譯系統(tǒng)自己安排。 例如:對(duì)表達(dá)式 a = f1( )+f2( ) 并不是所有的編譯系統(tǒng)都先調(diào)用f1( ), 然后調(diào)用f2( )。在有的情況下結(jié)果可能不同。有時(shí)會(huì)出現(xiàn)一些令人容易搞混的問(wèn)題,因此務(wù)必要小心謹(jǐn)慎。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 55語(yǔ)言中有的運(yùn)算符為一個(gè)字符,有的運(yùn)算符由兩個(gè)字符組成 ,為避免誤解,最好采取大家都能理解的寫(xiě)法。 例如:不要寫(xiě)成i+j的形式,而應(yīng)寫(xiě)成 (i+)+j的形式 C程序設(shè)計(jì)(第
27、三版)程序設(shè)計(jì)(第三版) http:/ 56在調(diào)用函數(shù)時(shí),實(shí)參數(shù)的求值順序,標(biāo)準(zhǔn)并無(wú)統(tǒng)一規(guī)定。例如:例如:的初值為,如果有下面的函數(shù)調(diào)用: printf(,i+) 在有的系統(tǒng)中,從左至右求值,輸出“,”。在多數(shù)系統(tǒng)中對(duì)函數(shù)參數(shù)的求值順序是自右而左,函數(shù)輸出的是“,”。以上這種寫(xiě)法不宜提倡, 最好改寫(xiě)成 j = i+;j = i+; printf(%d printf(%d, %d%d, j j,i)i)不要寫(xiě)出別人看不懂的也不知道系統(tǒng)會(huì)怎樣執(zhí)行程序C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 57(1)(1)賦值運(yùn)算符賦值運(yùn)算符 賦值符號(hào)“”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變
28、量。如“”的作用是執(zhí)行一次賦值操作(或稱(chēng)賦值運(yùn)算)。把常量賦給變量。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量. C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 58 (2) (2)類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換 如果賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類(lèi)型轉(zhuǎn)換。將浮點(diǎn)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄浮點(diǎn)數(shù)的小數(shù)部分。如如: :為整型變量,執(zhí)行“i=3.56”的結(jié)果是使的值為,以整數(shù)形式存儲(chǔ)在整型變量中.C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 59 將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中 如如: : 將23賦給float變量
29、,即執(zhí)行23,先將23轉(zhuǎn)換成2300000,再存儲(chǔ)在中。 將23賦給double型變量,即執(zhí)行23,系統(tǒng)將23補(bǔ)足有效位數(shù)字為2300000000000000,然后以雙精度浮點(diǎn)數(shù)形式存儲(chǔ)到變量中。 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 60將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲(chǔ)單元(4個(gè)字節(jié))中。但應(yīng)注意數(shù)值范圍不能溢出。 如如: :float f;double d=123.456789e100; f=d; 就出現(xiàn)溢出的錯(cuò)誤。 如果將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以8
30、個(gè)字節(jié)存儲(chǔ)C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 61字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),而整型變量為個(gè)字節(jié),因此將字符數(shù)據(jù)(個(gè)二進(jìn)位)放到整型變量存儲(chǔ)單元的低位中。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 62第一種情況:低位對(duì)應(yīng)、高位補(bǔ)零低位對(duì)應(yīng)、高位補(bǔ)零 若所用系統(tǒng)將字符處理為無(wú)符號(hào)字符類(lèi)型,或程序已將字符變量定義為unsigned char型,則將字符的位放到整型變量低位,高位補(bǔ)零。例如:例如:將字符將字符376賦給賦給int型變量型變量第二種情況:符號(hào)擴(kuò)展符號(hào)擴(kuò)展 若所用系統(tǒng)(如Turbo C+)將字符處理為帶符號(hào)(signed char)時(shí),若
31、字符最高位為,則整型變量高位補(bǔ);若字符最高位為,則高位全補(bǔ)。這稱(chēng)為“符號(hào)擴(kuò)展”,這樣做的目的是使數(shù)值保持不變,如變量(字符376)以整數(shù)形式輸出為,的值也是。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 63將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)啵@纾豪纾篿nt i=289;char c=a;c=i;c的值為33,如果用“%c”輸出c,將得到字符“!” !的ASCII碼為33。 賦值情況賦值情況 :C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 64 將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量
32、時(shí),要進(jìn)行符號(hào)擴(kuò)展,將整型數(shù)的16位送到long型低16位中:如果int型數(shù)據(jù)為正值(符號(hào)位為),則long型變量的高16位補(bǔ);如果int型變量為負(fù)值(符號(hào)位為),則long型變量的高16位補(bǔ),以保持?jǐn)?shù)值不改變。 反之,若將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量(即截?cái)啵?C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 65例如:例如:int a;long b;a=b 賦值情況如下賦值情況如下 :如果65536(八進(jìn)制數(shù)0200000),則賦值后值為。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 66將unsigned int
33、型數(shù)據(jù)賦給long int型變量時(shí),不存在符號(hào)擴(kuò)展問(wèn)題,只需將高位補(bǔ)即可。將一個(gè)unsigned類(lèi)型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的非unsigned型整型變量(例如:unsigned int -int,unsigned long-long,unsigned short-short),將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過(guò)相應(yīng)整型的范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 67例如:例如:unsigned int 65535; int b;;將整個(gè)送到中,由于是int,第位是符號(hào)位,因此b成了負(fù)數(shù)。根據(jù)補(bǔ)碼知識(shí)可知,的
34、值為-1,可以用printf(%d,b);來(lái)驗(yàn)證。 將非unsigned型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變量,也是原樣照賦(符號(hào)位也作為數(shù)值一起傳送)。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 68“%u”是輸出無(wú)符號(hào)數(shù)時(shí)所用的格式符。如果為正值,且在32767之間,則賦值后數(shù)值不變。運(yùn)行結(jié)果:運(yùn)行結(jié)果: C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 69 (3) (3) 復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符 在賦值符“”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。例如例如: 等價(jià)于 * 等價(jià)于 *() 等價(jià)于 以“”為例來(lái)說(shuō)明,它相當(dāng)于使進(jìn)行一次自加()的操作。即先使加,
35、再賦給。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 70為便于記憶,可以這樣理解:為便于記憶,可以這樣理解: a += b (其中a為變量,b為表達(dá)式) a += b(將有下劃線的“a+”移到“=”右側(cè)) |_ a = a + b (在“=”左側(cè)補(bǔ)上變量名a) C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 71注意注意: :如果是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有如果是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有 括號(hào)。括號(hào)。如:如: x %= y+3 x %= (y+3) |_ x = x %(y+3)(不要錯(cuò)寫(xiě)成x=x%y+3) 凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值
36、符。 語(yǔ)言規(guī)定可以使用種復(fù)合賦值運(yùn)算符:語(yǔ)言規(guī)定可以使用種復(fù)合賦值運(yùn)算符:,* *,| | C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 72(4) (4) 賦值表達(dá)式賦值表達(dá)式 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱(chēng)為“賦值表達(dá)式”。一般形式為一般形式為: 例如例如: “5”是一個(gè)賦值表達(dá)式 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 73對(duì)賦值表達(dá)式求解的過(guò)程是:對(duì)賦值表達(dá)式求解的過(guò)程是: 求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值; 賦給賦值運(yùn)算符左側(cè)的變量。例如例如: 賦值表達(dá)式“=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。 注意注意: 一個(gè)表達(dá)式應(yīng)該有
37、一個(gè)值一個(gè)表達(dá)式應(yīng)該有一個(gè)值 C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 74左值左值 (lvalue)(lvalue) : 賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符變量可以作為左值;而表達(dá)式就不能作為左值(如a+b);常變量也不能作為左值, 右值右值 (lvalue)(lvalue) :出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式 左值也可以出現(xiàn)在賦值運(yùn)算符右側(cè),因而左值 都可以作為右值。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 75 賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式。例如例如: : a=(b=5) 分析分析: :括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)”相當(dāng)于執(zhí)行“b=5”和“ab”兩個(gè)賦值表達(dá)式。 賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“(b5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價(jià)。C程序設(shè)計(jì)(第三版)程序設(shè)計(jì)(第三版) http:/ 76請(qǐng)分析下面的賦值表達(dá)式(a=3*5)=4*3分析分析: :先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12???/p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年幼兒園食品安全管理協(xié)議書(shū)
- 合作投資合同書(shū)示例
- 廣州市勞動(dòng)合同范本參考
- 2024燈飾采購(gòu)合同范文
- 安徽省淮南市七年級(jí)上學(xué)期語(yǔ)文期中試題3套【附答案】
- 提升機(jī)租賃合同樣式
- 2024抵押貸款合同協(xié)議書(shū)樣式
- 6.2 共筑生命家園(導(dǎo)學(xué)案) 2024-2025學(xué)年統(tǒng)編版道德與法治九年級(jí)上冊(cè)
- 購(gòu)房合同協(xié)議書(shū)范本
- 倉(cāng)庫(kù)租賃合同樣本
- 安徽省蕪湖市七年級(jí)上學(xué)期語(yǔ)文期中試卷(含答案)
- 兩癌知識(shí)科普課件
- 食用菌現(xiàn)代高效農(nóng)業(yè)示范園區(qū)建設(shè)項(xiàng)目建議書(shū)
- 東營(yíng)港加油、LNG加氣站工程環(huán)評(píng)報(bào)告表
- 2024年日歷(打印版每月一張)
- 車(chē)用動(dòng)力電池回收利用 管理規(guī)范 第2部分:回收服務(wù)網(wǎng)點(diǎn)征求意見(jiàn)稿編制說(shuō)明
- 新劍橋少兒英語(yǔ)第六冊(cè)全冊(cè)配套文本
- 科學(xué)預(yù)測(cè)方案
- 職業(yè)生涯規(guī)劃網(wǎng)絡(luò)與新媒體專(zhuān)業(yè)
- T-WAPIA 052.2-2023 無(wú)線局域網(wǎng)設(shè)備技術(shù)規(guī)范 第2部分:終端
- 市政管道開(kāi)槽施工-市政排水管道的施工
評(píng)論
0/150
提交評(píng)論