版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言語言第二章 基本數(shù)據(jù)類型及其運算C語言的數(shù)據(jù)類型1常量與變量2變量賦初值3各類數(shù)值型數(shù)據(jù)間的混合運算4運算符和表達式5C語言語言2.1 C語言的數(shù)據(jù)類型v數(shù)據(jù)是程序處理的對象。數(shù)據(jù)是程序處理的對象。C語言程序所處理語言程序所處理的數(shù)據(jù)根據(jù)其特定的形式是有類型之分的,的數(shù)據(jù)根據(jù)其特定的形式是有類型之分的, C語言的各種類型所能表示的數(shù)據(jù)是有范圍語言的各種類型所能表示的數(shù)據(jù)是有范圍的。程序設(shè)計的過程就是根據(jù)實際問題選的。程序設(shè)計的過程就是根據(jù)實際問題選擇合適的類型來表示具體的數(shù)據(jù)對象,并擇合適的類型來表示具體的數(shù)據(jù)對象,并對這些數(shù)據(jù)對象進行有效的操作。對這些數(shù)據(jù)對象進行有效的操作。C語言提語
2、言提供了豐富的數(shù)據(jù)類型,以滿足表示各種類供了豐富的數(shù)據(jù)類型,以滿足表示各種類型數(shù)據(jù)的需要。型數(shù)據(jù)的需要。C語言語言2.1 C語言的數(shù)據(jù)類型vC語言的數(shù)據(jù)類型包括:基本整型語言的數(shù)據(jù)類型包括:基本整型(int)、短、短整型整型(short)、長整型、長整型(long)、基本無符號、基本無符號整型整型(unsigned int)、無符號短整型、無符號短整型(unsigned short)、無符號長整型、無符號長整型(unsigned long)、字符類型、字符類型(char)、單精、單精度實型度實型(float)(浮點類型浮點類型)、雙精度實型、雙精度實型(double)、枚舉類型、枚舉類型(en
3、um)、數(shù)組類型、數(shù)組類型(array)、結(jié)構(gòu)體類型、結(jié)構(gòu)體類型(struct)、共用體類型、共用體類型(union)、指針類型以及空類型、指針類型以及空類型(void),如,如圖圖2-1所示。所示。C語言的基本數(shù)據(jù)類型有整型、語言的基本數(shù)據(jù)類型有整型、實型和字符型。實型和字符型。C語言語言2.1 C語言的數(shù)據(jù)類型數(shù)據(jù)類型基本類型字符型實型枚舉類型構(gòu)造類型指針類型空類型數(shù)組類型結(jié)構(gòu)體類型共用體類型圖2-1 C語言的數(shù)據(jù)類型整型C語言語言2.2 常量與變量v常量是在程序運行過程中,其值不可改變常量是在程序運行過程中,其值不可改變的量。的量。v變變量是在程序運行過程中,其值量是在程序運行過程中,其
4、值可以可以改變改變的量。的量。C語言語言2.2.1 常量1整型常量整型常量(1)整型常量的三種表示形式整型常量的三種表示形式1)十進制整數(shù):如十進制整數(shù):如1995,-18,0等。等。2)八進制整數(shù):以八進制整數(shù):以0開頭的數(shù)是八進制數(shù)。如開頭的數(shù)是八進制數(shù)。如0123表示八進制數(shù)表示八進制數(shù)123,即,即(123)8,等于十進制數(shù),等于十進制數(shù)83。-011表示八進制數(shù)表示八進制數(shù)-11,即,即- (11)8,等于十進制數(shù),等于十進制數(shù)-9。3)十六進制整數(shù):以十六進制整數(shù):以0 x開頭的數(shù)是十六進制數(shù)。如開頭的數(shù)是十六進制數(shù)。如0 x123表示十六進制數(shù)表示十六進制數(shù)123,即,即(123
5、)16,等于十,等于十進制數(shù)進制數(shù)301。-0 x11表示十六進制數(shù)表示十六進制數(shù)-11,即,即- (11)16,等于十進制數(shù),等于十進制數(shù)-17。C語言語言2.2.1 常量(2)整型常量的分類整型常量的分類1)一個整型常量,如果其值在一個整型常量,如果其值在215+215-1(即即-3276832767)范圍內(nèi),認為范圍內(nèi),認為它是它是int型的。因為型的。因為Turbo C/C+ 3.0系統(tǒng)中系統(tǒng)中short int型與型與int型數(shù)據(jù)在內(nèi)存型數(shù)據(jù)在內(nèi)存中占據(jù)的字節(jié)長度相同,都是兩個字節(jié),所以它們的表數(shù)范圍相同。因中占據(jù)的字節(jié)長度相同,都是兩個字節(jié),所以它們的表數(shù)范圍相同。因此一個此一個i
6、nt型的常量也同時是一個型的常量也同時是一個short int型常量,可以賦給型常量,可以賦給int型、型、short int型及型及l(fā)ong int型的變量。型的變量。2)一個整型常量,如果其值超過了上述范圍,在一個整型常量,如果其值超過了上述范圍,在231+231-1 (即即-21474836482147483647)范圍內(nèi),則認為它是范圍內(nèi),則認為它是long int型的??梢詫⑺偷???梢詫⑺x給一個賦給一個long int型的變量。型的變量。3)常量中沒有常量中沒有unsighed型。但一個非負值的整常量可以賦值給型。但一個非負值的整常量可以賦值給unsighed型型整變量,只要它的
7、范圍不超過變量的表數(shù)范圍即可。例如將整變量,只要它的范圍不超過變量的表數(shù)范圍即可。例如將2000賦給一賦給一個個unsighed型整變量是可以的,而將型整變量是可以的,而將7000賦給它是不行的。賦給它是不行的。4)在一個整常量后面加在一個整常量后面加l或或L,則認為它是,則認為它是long int型的。例如型的。例如123l、123L、0L等。這往往用于函數(shù)調(diào)用中,如果函數(shù)的形參為等。這往往用于函數(shù)調(diào)用中,如果函數(shù)的形參為long int型的,則要求型的,則要求實參也為實參也為long int型的,此時用型的,此時用123作實參不行,而要用作實參不行,而要用123l或或123L。C語言語言2
8、.2.1 常量2實型常量實型常量實數(shù)在實數(shù)在C語言中又稱為浮點數(shù)。語言中又稱為浮點數(shù)。(1)實數(shù)的兩種表示形式實數(shù)的兩種表示形式1)十進制數(shù)形式:它由數(shù)字和小數(shù)點組成十進制數(shù)形式:它由數(shù)字和小數(shù)點組成(注意:必須有小數(shù)點注意:必須有小數(shù)點),如,如0.123、.123、123.0、123.、0.0都是十進制數(shù)形式。都是十進制數(shù)形式。2)指數(shù)形式:如指數(shù)形式:如123e3或或123E3都代表都代表123103。但注意字母。但注意字母e或或E之前必須之前必須有數(shù)字,且有數(shù)字,且e后面指數(shù)必須為整數(shù),如后面指數(shù)必須為整數(shù),如e3、2.1e3.5、. e3、e等都是不合等都是不合法的指數(shù)形式。法的指數(shù)
9、形式。(2)實型常量的分類實型常量的分類 實型常量不分實型常量不分float型和型和double型。一個實型常量可以賦值給一個型。一個實型常量可以賦值給一個float型型或或double型變量。根據(jù)變量的類型截取實型常量中相應(yīng)的有效位。假如型變量。根據(jù)變量的類型截取實型常量中相應(yīng)的有效位。假如a已指定為單精度已指定為單精度float型變量:型變量:float a:a=111111.111;由于由于float型變量只能接受型變量只能接受7位有效數(shù)字,小數(shù)點后保留位有效數(shù)字,小數(shù)點后保留6位,因此位,因此a的值實際的值實際上是上是111111.100000。如果。如果a改為雙精度改為雙精度doub
10、le型變量,則能全部接受上型變量,則能全部接受上述述9位有效數(shù)字,位有效數(shù)字,a的值實際上是的值實際上是111111.111000。 C語言語言2.2.1 常量3字符型常量字符型常量(1)字符型常量的兩種表示形式字符型常量的兩種表示形式1)普通字符:用單引號普通字符:用單引號(即撇號即撇號)括起來的一個字符,如:括起來的一個字符,如:a、A、x、D、?、 (空格字符空格字符)等都是字符常量。注意:等都是字符常量。注意:a與與A是不同的字符常量。是不同的字符常量。2)轉(zhuǎn)義字符:以一個轉(zhuǎn)義字符:以一個開頭的字符序列,這是一種特殊形式的字開頭的字符序列,這是一種特殊形式的字符常量,叫轉(zhuǎn)義字符。例如,
11、前一章中已經(jīng)遇到過的在符常量,叫轉(zhuǎn)義字符。例如,前一章中已經(jīng)遇到過的在printf函數(shù)中的函數(shù)中的n,它代表一個換行符。這種非顯示字符難以用一,它代表一個換行符。這種非顯示字符難以用一般格式的字符表示,故規(guī)定用這種特殊形式表示。般格式的字符表示,故規(guī)定用這種特殊形式表示。常用的用常用的用開頭的轉(zhuǎn)義字符如開頭的轉(zhuǎn)義字符如表表2-1所示。所示?!纠?.1】 輸入一個字符,輸出該字符的字形及其ASCII碼值。#include void main()char ch;scanf(%c,&ch); / 輸入一個字符printf(%c的ASCII值為%dn,ch,ch); C語言語言2.2.1 常量
12、4字符串常量字符串常量 字符常量是用一對單引號字符常量是用一對單引號(即撇號即撇號)括起來的單個字符,而字符串常量是用括起來的單個字符,而字符串常量是用一對雙引號括起來的字符序列,例如,一對雙引號括起來的字符序列,例如,“Good”、“Study hard! ”、“C語言程語言程序設(shè)計序設(shè)計”等。字符串常量中可以包含漢字??梢暂敵鲆粋€字符串,如:等。字符串常量中可以包含漢字。可以輸出一個字符串,如: printf(Hello world! );注意:注意: u 每個字符串常量有一個字符串結(jié)束標(biāo)志每個字符串常量有一個字符串結(jié)束標(biāo)志0隱藏在串最后,標(biāo)志著該字符串結(jié)隱藏在串最后,標(biāo)志著該字符串結(jié)束。
13、字符串結(jié)束標(biāo)志由系統(tǒng)自動添加在字符串常量最后。束。字符串結(jié)束標(biāo)志由系統(tǒng)自動添加在字符串常量最后。 字符串字符串“Hello world! ”在內(nèi)存中的存放形式如在內(nèi)存中的存放形式如圖圖2-2所示。所示。u 它的長度不是它的長度不是12個字符,而是個字符,而是13個字符,最后一個字符為個字符,最后一個字符為0。但在輸出時,。但在輸出時,一個字符一個字符輸出,直到遇到最后的一個字符一個字符輸出,直到遇到最后的0,就知道字符串結(jié)束,停止輸出,就知道字符串結(jié)束,停止輸出,不輸出不輸出0。u 一個字符串中字符的個數(shù)稱為該字符串的長度一個字符串中字符的個數(shù)稱為該字符串的長度(不包括串結(jié)束標(biāo)志不包括串結(jié)束標(biāo)
14、志)。字符串中。字符串中每個漢字相當(dāng)于每個漢字相當(dāng)于2個字符,占個字符,占2個字節(jié)存儲單元。個字節(jié)存儲單元。u 不要將字符常量與字符串常量混淆,不要將字符常量與字符串常量混淆,a是字符常量,而是字符常量,而a是字符串常量,二是字符串常量,二者不同。字符常量可以賦值給一個字符變量,而一個字符串常量不能賦值給者不同。字符常量可以賦值給一個字符變量,而一個字符串常量不能賦值給一個字符變量,并且字符串沒有變量。一個字符變量,并且字符串沒有變量。 C語言語言2.2.1 常量5符號常量符號常量 符號常量是在程序中指定用符號名代表的一個常量。符號常量是在程序中指定用符號名代表的一個常量。 C語言中用編譯預(yù)處
15、理命令定義符號常量,用來表示一個常量,系統(tǒng)處理時,語言中用編譯預(yù)處理命令定義符號常量,用來表示一個常量,系統(tǒng)處理時,將程序中的所有符號名替換成對應(yīng)的常量。例如:將程序中的所有符號名替換成對應(yīng)的常量。例如: #define PI 3.14159 /*定義了符號常量定義了符號常量PI,PI即即3.14159*/ 在程序中,要使用在程序中,要使用3.14159這個數(shù)值時,只要用這個數(shù)值時,只要用PI代替,而在編譯預(yù)處理時,代替,而在編譯預(yù)處理時,程序中的所有程序中的所有“PI”均被替換成均被替換成“3.14159”。程序中已經(jīng)定義的符號常量只。程序中已經(jīng)定義的符號常量只能引用、不能再重復(fù)定義,不能被
16、重新賦值,也就是說符號常量的值是不能能引用、不能再重復(fù)定義,不能被重新賦值,也就是說符號常量的值是不能被改變的。被改變的?!纠?.2】 輸入一個半徑值,求圓周長和圓面積。輸入一個半徑值,求圓周長和圓面積。#include #define PI 3.14159void main()float r,k,s;scanf(%f,&r);k=2*PI*r;s=PI*r*r;printf(圓周長:圓周長:%.2f 圓面積:圓面積:%.2fn,k,s);C語言語言2.2.2 變量1變量的基本概念變量的基本概念 變量是在程序運行過程中,其值可以改變的量。變量在使用之前必須變量是在程序運行過程中,其值
17、可以改變的量。變量在使用之前必須要先強制定義,變量的一般定義格式如下要先強制定義,變量的一般定義格式如下( 括起來的部分表示可有可無括起來的部分表示可有可無): 存儲類型存儲類型 ,;u 存儲類型指定變量是存放在靜態(tài)存儲區(qū)還是動態(tài)存儲區(qū)。存儲類型指定變量是存放在靜態(tài)存儲區(qū)還是動態(tài)存儲區(qū)。u 類型標(biāo)識符指定所定義變量的類型,變量的類型可以是基本類型如整型、類型標(biāo)識符指定所定義變量的類型,變量的類型可以是基本類型如整型、實型、字符型等,也可以是用戶自定義的構(gòu)造類型標(biāo)識符。實型、字符型等,也可以是用戶自定義的構(gòu)造類型標(biāo)識符。u 變量名列表是用逗號隔開的若干個變量名,同類型的變量定義可放在同變量名列表
18、是用逗號隔開的若干個變量名,同類型的變量定義可放在同一語句中。其中變量名的取名應(yīng)滿足標(biāo)識符的命名規(guī)則。一個變量應(yīng)該一語句中。其中變量名的取名應(yīng)滿足標(biāo)識符的命名規(guī)則。一個變量應(yīng)該有一個自己的名字,在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存有一個自己的名字,在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存放該變量的值。放該變量的值。注意:注意:“變量名變量名”和和“變量值變量值”是變量的兩個重要屬性,是兩個不同的概是變量的兩個重要屬性,是兩個不同的概念。念。 如:如: int a; a=3; 這兩個語句表示定義了一個整型變量,該變量的變量名是這兩個語句表示定義了一個整型變量,該變量的變量名是a,該變
19、量,該變量的值是的值是3。 C語言語言2.2.2 變量u 取變量名的目的是為了系統(tǒng)在編譯連接時,給變量分配一個內(nèi)存地址,取變量名的目的是為了系統(tǒng)在編譯連接時,給變量分配一個內(nèi)存地址,同時根據(jù)該變量的類型分配一定的內(nèi)存單元。在程序中調(diào)用該變量時,同時根據(jù)該變量的類型分配一定的內(nèi)存單元。在程序中調(diào)用該變量時,就是通過變量名找到相應(yīng)的內(nèi)存地址,從其存儲單元中讀取數(shù)據(jù);對變就是通過變量名找到相應(yīng)的內(nèi)存地址,從其存儲單元中讀取數(shù)據(jù);對變量賦值時,就是通過變量名找到相應(yīng)的內(nèi)存地址,將數(shù)據(jù)寫入其存儲單量賦值時,就是通過變量名找到相應(yīng)的內(nèi)存地址,將數(shù)據(jù)寫入其存儲單元中。元中。u 理論上來說,任何合法的標(biāo)識符都
20、可以作變量名,但實際上在選擇標(biāo)識理論上來說,任何合法的標(biāo)識符都可以作變量名,但實際上在選擇標(biāo)識符作變量名時,應(yīng)達到符作變量名時,應(yīng)達到“見名知義見名知義”,即選有含義的英文單詞,即選有含義的英文單詞(或其縮寫或其縮寫)作變量名,如:作變量名,如:name,age,month等,除了數(shù)值計算程序外,一般不等,除了數(shù)值計算程序外,一般不要用代數(shù)符號要用代數(shù)符號(如如a,b,c,x1,y2等等)作變量名,以增加程序的可讀性。作變量名,以增加程序的可讀性。u 前面已經(jīng)提及,在前面已經(jīng)提及,在C語言中,要求對所有用到的變量要作強制定義,也就語言中,要求對所有用到的變量要作強制定義,也就是是“先定義,后使
21、用先定義,后使用”。這樣做可以帶來許多的好處:。這樣做可以帶來許多的好處: (1)保證程序中的變量名正確使用。例如:在保證程序中的變量名正確使用。例如:在main()中定義了一個整中定義了一個整型變量型變量int num;,但在,但在nam=10;賦值語句中,錯把賦值語句中,錯把num寫成了寫成了nam,在,在編譯時屏幕上會出現(xiàn)編譯時屏幕上會出現(xiàn)“Unfined symbol nam in function main ”的出的出錯提示,表示變量在錯提示,表示變量在main()中沒有定義。中沒有定義。 C語言語言2.2.2 變量 (2)編譯時根據(jù)類型分配內(nèi)存單元。如定義編譯時根據(jù)類型分配內(nèi)存單元
22、。如定義a,b為為int型,系統(tǒng)就會為型,系統(tǒng)就會為a,b各分配兩個字節(jié),各分配兩個字節(jié),并按整數(shù)方式存儲其值。并按整數(shù)方式存儲其值。(3)每一個變量屬于一個類型,這便于在編譯時每一個變量屬于一個類型,這便于在編譯時根據(jù)該變量所屬的類型檢查該變量所進行的根據(jù)該變量所屬的類型檢查該變量所進行的運算是合法,如:運算是合法,如: float a,b,c; c=a%b; 在編譯時會提示該語句出錯,因為在編譯時會提示該語句出錯,因為%是是“求余求余”運算,只使用于整型數(shù)據(jù)。運算,只使用于整型數(shù)據(jù)。C語言語言2.2.2 變量2整型變量整型變量(1)整型變量的分類與表示整型變量的分類與表示uC語言的整型變量
23、可分為基本整型語言的整型變量可分為基本整型(int)、短整型、短整型(short int,可簡寫為,可簡寫為short)和長整型和長整型(long int,可,可簡寫為簡寫為long)三種。整型數(shù)據(jù)中,按數(shù)據(jù)是否帶符號,三種。整型數(shù)據(jù)中,按數(shù)據(jù)是否帶符號,又分為有符號又分為有符號(signed)整數(shù)和無符號整數(shù)和無符號(unsigned)整整數(shù)。數(shù)。u在不同的在不同的C編譯環(huán)境中整型數(shù)據(jù)所占據(jù)的內(nèi)存空間的編譯環(huán)境中整型數(shù)據(jù)所占據(jù)的內(nèi)存空間的長度長度(即字節(jié)數(shù)即字節(jié)數(shù))有所不同,但有一個基本規(guī)則,即:有所不同,但有一個基本規(guī)則,即:int型的長度大于或等于型的長度大于或等于short型,并且小于
24、或等于型,并且小于或等于long型。型。表表2-2所示為所示為Turbo C/C+ 3.0系統(tǒng)中整型系統(tǒng)中整型數(shù)據(jù)的長度、類型標(biāo)識符與數(shù)值范圍。本書中所有數(shù)據(jù)的長度、類型標(biāo)識符與數(shù)值范圍。本書中所有例子用到的整型數(shù)據(jù)都以表例子用到的整型數(shù)據(jù)都以表2-2為準(zhǔn)。為準(zhǔn)。C語言語言2.2.2 變量u整數(shù)在計算機內(nèi)部是按該數(shù)的二進制補碼形式存放整數(shù)在計算機內(nèi)部是按該數(shù)的二進制補碼形式存放的。其中最高位是符號位,符號位用的。其中最高位是符號位,符號位用“0”或或“1”分分別表示正數(shù)或負數(shù)。對于正整數(shù),其原碼、反碼、別表示正數(shù)或負數(shù)。對于正整數(shù),其原碼、反碼、補碼相同。負整數(shù)的反碼為其原碼除符號位外按位補碼
25、相同。負整數(shù)的反碼為其原碼除符號位外按位取反取反(即即0改為改為1、1改為改為0),而補碼為其反碼末位再,而補碼為其反碼末位再加加1。 例如:例如: 19的原碼為:的原碼為:0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 19的反碼為:的反碼為:0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 19的補碼為:的補碼為:0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 19的原碼為:的原碼為:1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 19的反碼為:的反碼為:1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 19的補碼
26、為:的補碼為:1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1C語言語言2.2.2 變量(1)整型變量的定義整型變量的定義u前面已經(jīng)提及,在前面已經(jīng)提及,在C語言中,要求對所有用到的變量要先定語言中,要求對所有用到的變量要先定義、后使用,即在程序中先定義其所屬類型,同一類型的多義、后使用,即在程序中先定義其所屬類型,同一類型的多個變量的定義可以集中在一個定義語句中完成,也可以分散個變量的定義可以集中在一個定義語句中完成,也可以分散用多個定義語句,例如:用多個定義語句,例如: int a,b; 等價于等價于 int a;int b; 等價于等價于 int a; int b; (指定
27、變量指定變量a,b為整型為整型)u變量在定義時可以同時初始化變量在定義時可以同時初始化(即給變量賦一個初始值即給變量賦一個初始值)。例如:。例如: int a=3; unsigned y1=65522; long x2=123456789;C語言語言2.2.2 變量u在變量定義中可以用在變量定義中可以用const限定符來限定變量,該限定符用于限定符來限定變量,該限定符用于制定該變量的值不能被改變。例如:制定該變量的值不能被改變。例如: const int pi=3.14159; const long upper=65535;【例例2.3】寫出下面程序的運行結(jié)果。寫出下面程序的運行結(jié)果。#inc
28、lude main()int a=1,b=-1;unsigned c,d;c=a;d=b;printf(%d,%d,%d, %u, %d, %u,a,b,c,c,d,d);C語言語言2.2.2 變量u在將一個整型常量賦值給一個整型變量時,要在將一個整型常量賦值給一個整型變量時,要注注意意以下幾點:以下幾點:1)一個取值范圍為一個取值范圍為-3276832767的整數(shù),被看作是的整數(shù),被看作是int型常型常量,可以給量,可以給int型和型和long型變量賦值;一個取值范圍為型變量賦值;一個取值范圍為-21474836482147483647的整數(shù),被看作是的整數(shù),被看作是long型常量,型常量,
29、只可以給只可以給long型變量賦值。型變量賦值。2)Turbo C/C+3.0規(guī)定規(guī)定int型和型和short int型數(shù)據(jù)占據(jù)相同長型數(shù)據(jù)占據(jù)相同長度的內(nèi)存字節(jié),即度的內(nèi)存字節(jié),即2個字節(jié),所以個字節(jié),所以int型常量同時也是型常量同時也是short int型常量,可以賦值給型常量,可以賦值給int型和型和short int型變量。型變量。 3)在函數(shù)調(diào)用中,如果形參是在函數(shù)調(diào)用中,如果形參是long int型的,那么實參也必型的,那么實參也必須是須是long int型的,具體內(nèi)容見后面第五章。型的,具體內(nèi)容見后面第五章。 C語言語言2.2.2 變量3實型變量實型變量(1)實型變量的分類與表
30、示實型變量的分類與表示uC的實型變量主要有的實型變量主要有float類型類型(32位位)和和double類型類型(64位位)兩種,還有一種兩種,還有一種long double類型類型(80位位),因,因為用得比較少,不準(zhǔn)備在此作詳細的介紹了。為用得比較少,不準(zhǔn)備在此作詳細的介紹了。u表表2-3列出了實型數(shù)據(jù)的數(shù)據(jù)長度、類型標(biāo)識符、數(shù)列出了實型數(shù)據(jù)的數(shù)據(jù)長度、類型標(biāo)識符、數(shù)值范圍與有效位數(shù),由于實型數(shù)據(jù)在內(nèi)存中由有限值范圍與有效位數(shù),由于實型數(shù)據(jù)在內(nèi)存中由有限的存儲單元表示,因此所提供的有效位數(shù)是有限的。的存儲單元表示,因此所提供的有效位數(shù)是有限的。不同的實型數(shù)據(jù)所占據(jù)的存儲單元不同,有效位數(shù)不
31、同的實型數(shù)據(jù)所占據(jù)的存儲單元不同,有效位數(shù)也不同。在編程時要根據(jù)實際需要正確地選擇實型也不同。在編程時要根據(jù)實際需要正確地選擇實型數(shù)據(jù)類型、處理可能出現(xiàn)的計算誤差。數(shù)據(jù)類型、處理可能出現(xiàn)的計算誤差。C語言語言2.2.2 變量(2)實型變量的定義實型變量的定義u實型變量的定義方法與整型變量完全一致。實型變量的定義方法與整型變量完全一致。u實型常量不分實型常量不分float型和型和double型。一個實型常量可型。一個實型常量可以賦值給一個以賦值給一個float型或型或double型變量,根據(jù)變量的型變量,根據(jù)變量的類型截取實型常量中相應(yīng)的有效位數(shù)字。例如:類型截取實型常量中相應(yīng)的有效位數(shù)字。例如
32、: float a; a=123456789.123456789; 由于由于float型變量只能接受型變量只能接受7位有效數(shù)字,因此整數(shù)部位有效數(shù)字,因此整數(shù)部分的最后兩位以及小數(shù)部分取隨機值。如果分的最后兩位以及小數(shù)部分取隨機值。如果a改為改為double型,則能全部接受整數(shù)部分的型,則能全部接受整數(shù)部分的9位有效數(shù)字,位有效數(shù)字,小數(shù)部分保留小數(shù)部分保留6位。位。C語言語言2.2.2 變量【例例2.4】 寫出下面程序的運行結(jié)果。寫出下面程序的運行結(jié)果。#include main()float a;a=123456789.123456789;printf(n%f,%e,a,a);C語言語言2
33、.2.2 變量4字符型變量字符型變量u字符型變量用來存放字符常量。一個字符型變量在字符型變量用來存放字符常量。一個字符型變量在內(nèi)存中只占一個字節(jié),只能存放一個字符。字符在內(nèi)存中只占一個字節(jié),只能存放一個字符。字符在內(nèi)存中以內(nèi)存中以ASCII碼值存儲。字符變量的定義形式如下:碼值存儲。字符變量的定義形式如下: char c1,c2;【例例2.5】 寫出下面程序的運行結(jié)果。寫出下面程序的運行結(jié)果。#include main()char c1,c2;c1= a;c2= A;printf(n%c,%c,c1,c2);printf(n%d,%d,c1,c2);printf(n%d,%c,c1,c1);p
34、rintf(n%d,%c,c2,c2);C語言語言2.2.2 變量uC語言允許將字符型數(shù)據(jù)視作整型數(shù)據(jù)對待,語言允許將字符型數(shù)據(jù)視作整型數(shù)據(jù)對待, 所以字符型數(shù)所以字符型數(shù)據(jù)可以參與整型數(shù)據(jù)所具有的算數(shù)運算;同樣允許將整型數(shù)據(jù)可以參與整型數(shù)據(jù)所具有的算數(shù)運算;同樣允許將整型數(shù)據(jù)視作字符型數(shù)據(jù)對待,當(dāng)將整型數(shù)據(jù)視作字符型數(shù)據(jù)對待據(jù)視作字符型數(shù)據(jù)對待,當(dāng)將整型數(shù)據(jù)視作字符型數(shù)據(jù)對待時,應(yīng)將該整型數(shù)據(jù)與時,應(yīng)將該整型數(shù)據(jù)與256作模運算,所得的結(jié)果即為對應(yīng)字作模運算,所得的結(jié)果即為對應(yīng)字符的符的ASCII碼值。碼值。 【例例2.6】 寫出下面程序的運行結(jié)果。寫出下面程序的運行結(jié)果。#include
35、main()char c1,c2,c3,c4;c1= a;c3=c1+4;c2= A;c4=c2-5;printf(n%c,%c,c1,c3);printf(n%c,%c,c2,c4);printf(n%d,%d,c1,c3);printf(n%d,%d,c2,c4);C語言語言2.3 變量賦初值v 變量定義后其初值一般是不確定的,不能直接使用。例如:變量定義后其初值一般是不確定的,不能直接使用。例如: int a; printf(%dn,a); 該語句執(zhí)行后的輸出結(jié)果是不確定的。該語句執(zhí)行后的輸出結(jié)果是不確定的。v 在定義變量的同時也可以同時對變量賦初值,稱為變量的初在定義變量的同時也可以同
36、時對變量賦初值,稱為變量的初始化。例如:始化。例如: int x,sum=0; double pi=3.14159,area; char c1=#,c2; 這三條語句分別定義了這三條語句分別定義了x、sum為為int類型變量,類型變量,pi、area為為double類型變量,類型變量,c1、c2為為char類型變量;并且為類型變量;并且為sum、pi、c1賦初值。賦初值。v 如果幾個同類型變量的初值是相同的,也要分開賦值。例如:如果幾個同類型變量的初值是相同的,也要分開賦值。例如: int a=1,b=1,c=1; 表示定義整型變量表示定義整型變量a. b. c并賦初始值均為并賦初始值均為1,
37、不能寫成,不能寫成“int a=b=c=1;”。 C語言語言2.4 各類數(shù)值型數(shù)據(jù)間的混合運算v各類型數(shù)據(jù)間的混合運算各類型數(shù)據(jù)間的混合運算v自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換v強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換C語言語言2.4 各類數(shù)值型數(shù)據(jù)間的混合運算C語言語言2.4 各類數(shù)值型數(shù)據(jù)間的混合運算C語言語言2.5 運算符和表達式v運算符運算符C語言提供的運算符非常豐富,按其功能分為以下幾類:語言提供的運算符非常豐富,按其功能分為以下幾類:1算術(shù)運算符:用于各類數(shù)值運算。包括加算術(shù)運算符:用于各類數(shù)值運算。包括加(+)、減、減(-)、乘、乘(*)、除、除(/)、求余、求余(或或稱模運算,稱模運算,%)、自增、自增
38、(+)、自減、自減(-)共七種。共七種。2關(guān)系運算符:用于比較運算。包括大于關(guān)系運算符:用于比較運算。包括大于()、小于、小于(=)、小于等于、小于等于(=,=)三類,共十一種。三類,共十一種。5位操作運算符:參與運算的量,按二進制位進行運算。包括位與位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或、位或(|)、位非位非()、位異或、位異或()、左移、左移()六種。六種。6條件運算符:這是一個三目運算符,用于條件求值條件運算符:這是一個三目運算符,用于條件求值(?:?:)。7逗號運算符:用于把若干表達式組合成一個表達式逗號運算符:用于把若干表達式組合成一個表達式(,
39、)。8求字節(jié)數(shù)運算符:用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)求字節(jié)數(shù)運算符:用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。9指針運算符:用于取內(nèi)容指針運算符:用于取內(nèi)容(*)和取地址和取地址(&)二種運算。二種運算。10特殊運算符:有括號特殊運算符:有括號( ),下標(biāo),下標(biāo) ,成員,成員(-,.)等幾種。等幾種。C語言語言2.5 運算符和表達式v表達式表達式1.由運算符和括號將對應(yīng)的運算對象由運算符和括號將對應(yīng)的運算對象(也稱操作數(shù)也稱操作數(shù))聯(lián)系起聯(lián)系起來、符合來、符合C語言規(guī)則的式子,就是表達式。那么,由算語言規(guī)則的式子,就是表達式。那么,由算術(shù)運算符和括號將對應(yīng)的算術(shù)運算對象聯(lián)系起來、符合
40、術(shù)運算符和括號將對應(yīng)的算術(shù)運算對象聯(lián)系起來、符合C語言規(guī)則的式子,就是算術(shù)表達式。語言規(guī)則的式子,就是算術(shù)表達式。2.運算符的運算對象可以是變量、常量、函數(shù)等。運算符的運算對象可以是變量、常量、函數(shù)等。3.根據(jù)運算符的優(yōu)先級和結(jié)合性可以計算出各個表達式的根據(jù)運算符的優(yōu)先級和結(jié)合性可以計算出各個表達式的值。一個表達式有一個值及其類型,值。一個表達式有一個值及其類型, 它們等于計算表它們等于計算表達式所得結(jié)果的值和類型。達式所得結(jié)果的值和類型。4.表達式求值按運算符的優(yōu)先級和結(jié)合性規(guī)定的順序進行。表達式求值按運算符的優(yōu)先級和結(jié)合性規(guī)定的順序進行。5.單個的常量、變量、函數(shù)可以看作是表達式的特例。單
41、個的常量、變量、函數(shù)可以看作是表達式的特例。C語言語言2.5.1 算術(shù)運算符和算術(shù)表達式vC語言中的算術(shù)運算符有以下語言中的算術(shù)運算符有以下8種,按優(yōu)先級從高到種,按優(yōu)先級從高到低排列依次為:低排列依次為: (取負取負)、+(自增自增)、- (自減自減) * (乘乘)、/(除除)、%(求余求余) + (加加)和和(減減) 其中:其中: (取負取負)、+(自增自增)和和- (自減自減)為單目運算符,為單目運算符,優(yōu)先級相同,結(jié)合性為從右到左;其余為雙目運算優(yōu)先級相同,結(jié)合性為從右到左;其余為雙目運算符,結(jié)合性均為從左到右。符,結(jié)合性均為從左到右。注意:注意:取余運算符取余運算符“%”是求整數(shù)除法
42、的余數(shù),余數(shù)符是求整數(shù)除法的余數(shù),余數(shù)符號與被除數(shù)的符號相同。號與被除數(shù)的符號相同?!?”不能用于實型數(shù)據(jù)的不能用于實型數(shù)據(jù)的運算。例如:運算。例如: 2%3 為為2,4%2 為為0,a%6 為為1,9%5 為為-4,9%-5 為為4,3.8%2非法等。非法等。 C語言語言2.5.1 算術(shù)運算符和算術(shù)表達式前綴格式:前綴格式:運算符運算符 變量變量先使變量加先使變量加(減減)1,再使用變量的值再使用變量的值單目運算符單目運算符+(自增自增)、- (自減自減)后綴格式:后綴格式:變量變量 運算符運算符先使用變量的原值,先使用變量的原值,再使變量加再使變量加(減減)1 對于變量i,“i+”和“+i
43、”都表示“i=i+1”,前綴格式和后綴格式在使用上沒有什么區(qū)別;另外,“i-”和“-i”也是一樣的。但是,當(dāng)自增、自減運算作為表達式的一部分時,采用不同格式對表達式來說結(jié)果是不一樣的。另外,自增、自減運算符一般用于循環(huán)語句中,使循環(huán)變量自動增1、減1,也用于指針變量,使指針指向下一個變量。 C語言語言2.5.1 算術(shù)運算符和算術(shù)表達式【例例2.7】 注意下列程序運行后變量注意下列程序運行后變量x與與y的區(qū)別。的區(qū)別。#include void main()int a=2,b=2,x,y;x=-a+2;y=b-+2;printf(x=%d y=%d a=%d b=%dn,x,y,a,b);【例例
44、2.8】 分析下面程序的運行結(jié)果。分析下面程序的運行結(jié)果。【例例2.9】 分析下面程序的運行結(jié)果。分析下面程序的運行結(jié)果。C語言語言2.5.2 關(guān)系運算符和關(guān)系表達式 關(guān)系運算是雙目運算,用于對兩個運算對象的大小進行比較。關(guān)系運算是雙目運算,用于對兩個運算對象的大小進行比較。用關(guān)系運算符將一些運算對象連接起來構(gòu)成的式子,就叫關(guān)系表用關(guān)系運算符將一些運算對象連接起來構(gòu)成的式子,就叫關(guān)系表達式。關(guān)系運算的結(jié)果是達式。關(guān)系運算的結(jié)果是“成立成立”或或“不成立不成立”,也就是邏輯意,也就是邏輯意義上的義上的“真真”或或“假假”。在。在C語言中沒有設(shè)置表示邏輯值的數(shù)據(jù)語言中沒有設(shè)置表示邏輯值的數(shù)據(jù)類型,
45、但規(guī)定用數(shù)值類型,但規(guī)定用數(shù)值1代表代表“真真”,用數(shù)值,用數(shù)值0代表代表“假假”;在判斷;在判斷參加運算的對象的真、假時,將非零的數(shù)值認作參加運算的對象的真、假時,將非零的數(shù)值認作“真真”,0認作認作“假假”。1關(guān)系運算符關(guān)系運算符C語言提供的關(guān)系運算符共語言提供的關(guān)系運算符共6個,分別為:個,分別為:(大于大于) =(大于或等于大于或等于) (小于小于) 、=、=”運算的優(yōu)先級相同,運算的優(yōu)先級相同,“=、!=”運算的優(yōu)先級相同,且前者高于后者。運算的優(yōu)先級相同,且前者高于后者。(2)關(guān)系運算符的優(yōu)先級比算術(shù)運算符的優(yōu)先級低、比賦值運算符的關(guān)系運算符的優(yōu)先級比算術(shù)運算符的優(yōu)先級低、比賦值運
46、算符的優(yōu)先級高。優(yōu)先級高。C語言語言2.5.2 關(guān)系運算符和關(guān)系表達式 2關(guān)系表達式舉例關(guān)系表達式舉例【例例2.10】 分析下面程序的運行結(jié)果。分析下面程序的運行結(jié)果。#include void main()int a,b,c;scanf(%d%d%d,&a,&b,&c);a=b!=c; / 第第5行行printf(a=%d,b=%d,c=%dn,a,b,c);a=(b=c+*3); / 第第7行行printf(a=%d,b=%d,c=%dn,a,b,c);a=bc2; / 第第9行行printf(a=%d,b=%d,c=%dn,a,b,c);C語言語言2.5.2 關(guān)系
47、運算符和關(guān)系表達式【例例2.11】 若有若有int x=2,y=3,z=5;,計算下列關(guān)系表達式的值。,計算下列關(guān)系表達式的值。(1) x%2=0: 表達式的值是表達式的值是1?!皒%2”值為值為0,再計算,再計算“0=0”結(jié)果為結(jié)果為1。(2)z=x1=y2=1=”與與“=1”其值是其值是1,得,得“z=11”,再計算,再計算“11”為為0,故,故z及表達式的計算結(jié)果為及表達式的計算結(jié)果為0。(3)853: 表達式值是表達式值是1。根據(jù)運算符的結(jié)合性從左到右計算,先計算。根據(jù)運算符的結(jié)合性從左到右計算,先計算“85”其值為其值為0,再計算,再計算“03”,值為,值為1,表達式的值為,表達式的
48、值為1?!纠?.12】 分析下面程序的運行結(jié)果。分析下面程序的運行結(jié)果。C語言語言2.5.3 邏輯運算符和邏輯表達式 邏輯運算用于判斷運算對象的邏輯關(guān)系,通常表示一些比邏輯運算用于判斷運算對象的邏輯關(guān)系,通常表示一些比較復(fù)雜的條件。邏輯運算的對象除了關(guān)系運算結(jié)果較復(fù)雜的條件。邏輯運算的對象除了關(guān)系運算結(jié)果(邏輯量邏輯量)外,外,可以是任何類型的數(shù)據(jù)可以是任何類型的數(shù)據(jù)(包括整型、實型、字符型等包括整型、實型、字符型等),以運算對,以運算對象的值是零還是非零來判斷它們是象的值是零還是非零來判斷它們是“真真”還是還是“假假”。1邏輯運算符邏輯運算符C語言提供的邏輯運算符共語言提供的邏輯運算符共3個,分別為:個,分別為:!
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度機關(guān)單位二手房買賣管理服務(wù)合同3篇
- 云南財經(jīng)大學(xué)《工程材料及成型技術(shù)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度國有企業(yè)公務(wù)用車租賃服務(wù)合同書
- 2025年度對公房屋租賃合同專業(yè)版(含租賃雙方責(zé)任界定)3篇
- 2025年度夫妻雙方婚內(nèi)財產(chǎn)權(quán)益變更與清查協(xié)議
- 2025年度城市公共設(shè)施維護與售后服務(wù)合同3篇
- 豫章師范學(xué)院《電力電子學(xué)雙》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度合伙開發(fā)特色小鎮(zhèn)合作協(xié)議書
- 2025年度稻田土地承包經(jīng)營與農(nóng)業(yè)產(chǎn)業(yè)鏈整合合作協(xié)議3篇
- 2025年度高層住宅樓安全生產(chǎn)施工合同范本2篇
- 我國鋼鐵企業(yè)環(huán)境會計信息披露問題研究以寶鋼為例13.26
- 小學(xué)少先隊活動課贛教三年級上冊主題一唱響嘹亮的隊歌勇敢前進
- 《穿井得一人》《桑中生李》閱讀練習(xí)及答案
- “大綜合一體化”行政執(zhí)法改革工作自查報告
- DB5110∕T 37-2021 地理標(biāo)志產(chǎn)品 資中冬尖加工技術(shù)規(guī)范
- (3)110KV配電裝置安裝單位工程質(zhì)量驗收評定表1
- 課程設(shè)計之年產(chǎn)90000噸丙酮水連續(xù)精餾塔的設(shè)計
- 贊比亞礦產(chǎn)資源及礦業(yè)開發(fā)前景分析
- 餐飲前臺餐具與雜件清單
- 河南省建設(shè)工程安全監(jiān)督備案申請表
- 海拔高度與氣壓、空氣密度、重力加速度對照表
評論
0/150
提交評論