




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第二章第二章 數據類型、運算數據類型、運算符和表達式符和表達式本章導讀本章導讀 數據是程序處理的對象,是程序設計中數據是程序處理的對象,是程序設計中的重要組成部分。的重要組成部分。C語言為我們提供了豐富的語言為我們提供了豐富的數據類型和運算符及語法規則。數據類型和運算符及語法規則。 內容內容:C語言的基本數據類型、標識符和語言的基本數據類型、標識符和關鍵字、常量和變量,運算符與表達式以及關鍵字、常量和變量,運算符與表達式以及數據類型之間的轉換等。數據類型之間的轉換等。 要求要求:掌握掌握C語言數據和數據類型的相關語言數據和數據類型的相關知識,熟練掌握運算符和表達式的使用方法。知識,熟練掌握運算
2、符和表達式的使用方法。2.1 簡介簡介 2.1.1 常量常量n常量是指在程序執行的過程中,其值不常量是指在程序執行的過程中,其值不能改變的量(即常數)。能改變的量(即常數)。 n常量的特征是:值保持不變。常量的特征是:值保持不變。 2.1.2 變量變量 變量是指在程序執行的過程中,其值可變量是指在程序執行的過程中,其值可以改變的量。以改變的量。 1變量的三要素變量的三要素一個變量具有三個要素:名稱、存儲單元一個變量具有三個要素:名稱、存儲單元和值。變量的名稱在聲明變量時給出,和值。變量的名稱在聲明變量時給出,C語言中變量名用標識符表示,標識符是語言中變量名用標識符表示,標識符是用來標識變量、常
3、量、函數等的字符序用來標識變量、常量、函數等的字符序列。列。2標識符的命名規則標識符的命名規則只能由字母(大寫或小寫字母)、數字和下劃線其中的一種或幾種組成。第一個符號必須是字母或者下劃線。不能使用關鍵字作為標識符。區分大小寫字母。變量名的長度一般不受限制,但有些系統將前8個字符視為有效字符。在命名變量名時,變量名應盡可能見名知意。3有效和無效變量名實例有效和無效變量名實例(1)有效的變量名實例)有效的變量名實例sum Sum(系統認為(系統認為sum與與Sum是兩個不同的變量,即區分大是兩個不同的變量,即區分大小寫字母)小寫字母) student lotus_1_2_3 _above (2)
4、無效的變量名實例)無效的變量名實例3days(以數字開頭)(以數字開頭)char (關鍵字作為變量名)(關鍵字作為變量名)2.1.1 數據類型概述數據類型概述整型(整型(int)數據類型基本類型基本類型整型整型單精度型(單精度型(float)字符型(字符型(char)長整型(長整型(long)短整型(短整型(short)實型實型雙精度型雙精度型(double)枚舉類型(枚舉類型(enum)(第)(第9章)章)共用體類型(共用體類型(union)(第)(第9章)章)構造類型構造類型結構體類型(結構體類型(struct)(第)(第9章)章)數組類型(第數組類型(第6章)章)空類型(空類型(void
5、)指針類型(指針類型(* *)(第(第8章)章)2.1 數據類型數據類型ab (含有特殊字符)(含有特殊字符)$123 (開頭的字符不是合法字符)(開頭的字符不是合法字符) C語言規定,在使用變量之前,必須先語言規定,在使用變量之前,必須先聲明變量,即向內存申請一個指定類型聲明變量,即向內存申請一個指定類型的變量存儲空間。的變量存儲空間。 變量聲明的基本形式:變量聲明的基本形式: 數據類型數據類型 變量名;變量名; 1聲明變量聲明變量2變量的賦值變量的賦值 在程序中,可以對變量賦值,并且可以多次賦在程序中,可以對變量賦值,并且可以多次賦值,但變量的當前值只有值,但變量的當前值只有1個,為最后一
6、個賦個,為最后一個賦值所得到的值。值所得到的值。 變量賦值的形式如下:變量賦值的形式如下: 變量名變量名=指定的值;指定的值; 其中,指定的值可以是一個常量,如其中,指定的值可以是一個常量,如d=5; 也可以是一個表達式,如:也可以是一個表達式,如: a=b+3; 3變量的初始化變量的初始化 所謂變量的初始化就是在聲明變量的同時給變量一個初值。具體初始化的形式如下: 數據類型數據類型 變量名變量名=指定的值;指定的值; 其中,指定的值為一個常量。 如果只聲明了一個變量,而沒有初始化變量,可以在程序中對變量進行賦值。2.1.2 整型整型 根據存儲長度的不同,根據存儲長度的不同,C語言中的整型語言
7、中的整型又可分為:基本整型、短整型和長整型,分又可分為:基本整型、短整型和長整型,分別用別用int(基本整型)、(基本整型)、short int或或short(短整型)、(短整型)、long int或或long(長整型)來(長整型)來描述。在這些類型標識符之前還可以加上修描述。在這些類型標識符之前還可以加上修飾符飾符unsigned以表示數據是無符號數(以表示數據是無符號數(0和和正整數),沒有加正整數),沒有加unsigned的數據類型為有的數據類型為有符號類型,可以描述正整數、負整數和符號類型,可以描述正整數、負整數和0。2.1 數據類型數據類型表表2-1 整數類型整數類型 類 型 字節數
8、 取值范圍 int2-32768 32767 即即 -215 (215 1)unsigned int 20 65535 即即 0 (216 1)short2-32768 32767 即即 -215 (215 -1)unsigned short20 65535 即即 0 (216 -1)long4-21474836482147483647 即即 -231 (231 -1)unsigned long404294967295 即即 0 (232 -1)1整型常量整型常量 在C語言中整型常量可使用三種形式來表示:十進制、八進制和十六進制。(1)十進制整型常量)十進制整型常量 由數碼09組成,且第一個數
9、字不能為0。如,123、456等。(2)八進制整型常量)八進制整型常量 由數字0開頭的整型數,由數碼07組成。如,0123、076、0605等。 即一個八進制數前要有數字“0”作為前綴,表示是八進制整數。(3)十六進制整型常量)十六進制整型常量 要由“0 x”或“0X”作為前綴,其值由09、af或AF組成。如,0 x23a、0Xe45、0 xFFFF等。以下是不合法的十進制整型常量實例:以下是不合法的十進制整型常量實例:0123 /*數據前有0*/0 x568 /*數據前有前綴0 x*/fff /*組成的數碼不是合法的數碼*/以下是不合法的八進制整型常量實例:以下是不合法的八進制整型常量實例:
10、0128 /*組成的數碼不是合法的數碼*/123 /*沒有前綴0*/0 x253 /*前綴不合法*/o56 /*前綴不合法,應該是數值“0”,不是字母“o”*/以下是不合法的十六進制整型常量實例:以下是不合法的十六進制整型常量實例:0156 /*前綴不合法*/ox5df /*前綴不合法,是x前應該是數值“0”,不是字母“o”*/0 xfffk /*組成的數碼不是合法的數碼*/ff78 /*沒有前綴0 x*/int a; /*聲明整型整型變量a*/long s; /*聲明長整型變量s*/unsigned short x; /*聲明無符號短整型變量x*/在一個聲明變量的語句中也可以同時聲明多個同一
11、類型的變量。如:int a,b,c; /*聲明3個整型變量a,b,c*/short sum,ave,age,min,max;注意:注意:用一條語句來聲明多個同一類型的變量時,變量名和變量名之間要用逗號“,”作為分隔符。2整型變量的聲明整型變量的聲明3整型變量初始化整型變量初始化int d=5;short m=0,n=1;4整型變量的賦值整型變量的賦值sum=0;min=0;2.2.2 單精度浮點型單精度浮點型在日常生活中除了會用到整型數據外還會用到實型數據,即浮點在日常生活中除了會用到整型數據外還會用到實型數據,即浮點型數據。根據數據類型分類,浮點型可分為:單精度浮點型和雙型數據。根據數據類型
12、分類,浮點型可分為:單精度浮點型和雙精度浮點型。精度浮點型。 表表1-2-3 C1-2-3 C語言中浮點型數據類型語言中浮點型數據類型類型類型關鍵字關鍵字所占位數所占位數表示數的范圍表示數的范圍(約)(約)單精度浮點型單精度浮點型floatfloat3232位位1010-38-38103838雙精度浮點型雙精度浮點型doubledouble6464位位1010-308-3081010e308e3081float型常量型常量浮點型常量有兩種表示形式:小數形式和指數形式。(1)小數形式:)小數形式:如0.125、2.167、-.56、.98、6.、50.0等都是合法的浮點型常量。(2)指數形式:)
13、指數形式:如3.2e2、-2.6e4、1.23E-2、4E6、11.23e2等,分別表示3.2102、-2.6104、12310-2、4106、11.23102。注意:注意:字母e或E之前一定要有數字,之后也必須有數字,之后必須是整數。標準C語言允許float型數后使用后綴“f”或“F”,即表示該數為單精度浮點型常量。如2.14f、45.7F、60f等。 2float型變量的聲明型變量的聲明 float sum; float x,y;3float型變量的初始化型變量的初始化 float ave=87.5; float weight=20.68,high=69.02;4float型變量的賦值型變
14、量的賦值 sum=123.65; x=16.7;2.2.3 雙精度浮點型 單精度浮點類型外,還有雙精度浮點類型(double)。雙精度浮點型與單精度浮點型相似,但該類型的數據所占的內存空間(需8個字節)和取值范圍(10-30810e308)都比float類型的數據大很多,精確度也提高了很多,達到了15位。1double型變量的聲明型變量的聲明double sum;double x,y;2double型變量的初始化型變量的初始化double ave=87.5;double weight=20.68,high=69.02;2.2.4 字符型字符型字符類型的數據即通常的字符。字符類型的數據即通常的字
15、符。1字符型常量字符型常量字符型常量是用單引號括起來的單個字字符型常量是用單引號括起來的單個字符組成,如符組成,如a、b、6、*等都是合法等都是合法的字符型常量。字符常量中的單引號只的字符型常量。字符常量中的單引號只起到定界作用,并不表示字符本身。一起到定界作用,并不表示字符本身。一個字符型常量的存儲值是該字符集中對個字符型常量的存儲值是該字符集中對應的應的ASCII編碼值,常用字符的編碼值,常用字符的ASCII碼編碼表見附錄部分。碼編碼表見附錄部分。 Void main() Char ch; Ch=a; Printf(“ch的ASCLL碼值是%d,ch本身這個字符是%c”,ch,ch); 2
16、轉義字符轉義字符 一般來說,字母或數字類型的字符型常量可以直接書寫,但有些控制字符如換行符、退格符等不能直接書寫,為此C語言提供了一類特殊形式的字符序列來表示這些無法在鍵盤上直接表示的字符,即轉義字符。表表1-2-61-2-6常用的轉義字符表常用的轉義字符表 n轉義字符序列轉義字符序列名稱名稱功能功能單引號單引號產生一個單引號產生一個單引號”雙引號雙引號產生一個雙引號產生一個雙引號?問號問號產生一個問號產生一個問號反斜杠反斜杠產生一個反斜杠產生一個反斜杠0空空產生一個空字符產生一個空字符a響鈴響鈴產生一則警告鈴聲產生一則警告鈴聲b退格退格將光標退回一位將光標退回一位f換頁換頁將光標移到下一頁的
17、第一位將光標移到下一頁的第一位n換行換行將光標移到下一行的第一位將光標移到下一行的第一位r回車回車將光標移到當前行的第一位將光標移到當前行的第一位t水平制表水平制表將光標移到下一個水平制表位置將光標移到下一個水平制表位置v垂直制表垂直制表將光標移到下一個垂直制表位置將光標移到下一個垂直制表位置ddd八進制字符八進制字符產生一個產生一個13位八進制數所代表的字符位八進制數所代表的字符xhh十六進制字符十六進制字符產生一個產生一個12位十六進制數所代表的字符位十六進制數所代表的字符 void main() printf(An);printf(101n);printf(x41n); 3字符型變量的聲
18、明字符型變量的聲明char ch1 ;char ch1, ch1 ;4字符型變量的初始化字符型變量的初始化char ch1=* ;5字符型變量的賦值字符型變量的賦值ch1=b ;ch2=0 ;2.3 符號常量 符號常量在使用之前必須先定義,定義形式如符號常量在使用之前必須先定義,定義形式如下:下: #define 符號常量名符號常量名 常量值常量值 其中其中#define是一條被稱為是一條被稱為“宏定義宏定義”的預處理的預處理命令,作用是將符號常量名定義為其后的常量命令,作用是將符號常量名定義為其后的常量值;符號常量名是合法的標識符,習慣上定義值;符號常量名是合法的標識符,習慣上定義符號常量的
19、標識符用大寫字母表示。符號常量符號常量的標識符用大寫字母表示。符號常量定義后,只要在程序中出現該標識符的地方均定義后,只要在程序中出現該標識符的地方均用該常量值代替。用該常量值代替。【例【例1.2.1】符號常量使用實例】符號常量使用實例輸入圓的半徑,計算輸入圓的半徑,計算該圓的面積。該圓的面積。/* ex1_2_1.c */#include stdio.h#define PI 3.1415926 /*利用宏定義命令定義利用宏定義命令定義值值*/void main()float s,r; scanf(%f,&r); /*從鍵盤輸入一個半徑的值從鍵盤輸入一個半徑的值*/ s=PI*r*r;
20、 /*根據求圓面積的公式計算圓的面積根據求圓面積的公式計算圓的面積*/printf(n半徑半徑r=%f的圓的面積為:的圓的面積為:s=%fn,r,s);2.4 輸入輸出函數輸入輸出函數 計算機執行程序的過程實質上是處理信息的過程,而處理信息時往往需要輸入原始數據,輸出處理結果。C語言本身不提供輸入/輸出語句,其輸入和輸出的功能主要是利用函數來完成的。用于接收和顯示數據的函數主要是scanf()和printf(),它們是C語言提供的標準的庫函數,其函數的原型在頭文件“stdio.h”中定義,所以,如果在程序中使用scanf()或printf(),應在程序最前面包括如下命令行: #include
21、“stdio.h” 其作用是告訴編譯程序,在該程序段中使用了C標準庫里的輸入或輸出函數,這樣編譯程序就可以正確處理這些函數的使用了。2.4.1 printf()函數printf()函數的功能是將信息按照指定的格函數的功能是將信息按照指定的格式在顯示器上顯示。式在顯示器上顯示。1.printf()函數的一般形式函數的一般形式printf(格式控制串格式控制串,輸出列表);輸出列表);其中其中“格式控制串格式控制串”和和“輸出列表輸出列表”實際實際上是上是printf()函數的參數,函數的參數,“格式控制串格式控制串”是用雙引號括起來的字符串,包括兩種是用雙引號括起來的字符串,包括兩種信息:格式說
22、明符和原樣輸出字符。信息:格式說明符和原樣輸出字符。2. 格式說明符和原樣輸出字符格式說明符和原樣輸出字符(1)格式說明符)格式說明符格式說明符由格式說明符由“%”開頭,格式字符結尾。如開頭,格式字符結尾。如%d,%f,%c等,作用分別是將輸出的數據以整型、等,作用分別是將輸出的數據以整型、浮點型和字符型輸出。浮點型和字符型輸出。(2)原樣輸出字符)原樣輸出字符 原樣輸出字符是普通字符或轉義字符。如例原樣輸出字符是普通字符或轉義字符。如例1.2.1中中,printf()函數中函數中“半徑半徑r=”和和“的圓的面積的圓的面積s=”都屬于原樣輸出的普通字符;都屬于原樣輸出的普通字符;n是轉義字符,
23、作用是換行。是轉義字符,作用是換行。 3.輸出列表輸出列表 “輸出列表”即是要輸出的對象。其中輸出的對象可以是有具體值的變量,可以是常量或可以計算出具體值的表達式,也可以沒有輸出項。同時輸出多個量時,各量之間用逗號間隔。 #include stdio.h void main() long int a=5;printf(a=% ldn,a); void main()int a=1234,b=123;float f=123.456;static char c =Hello,world!;printf(%8d,%-8dn,a,a);printf(%10.5s,%-10.3sn,c,c);printf
24、(%08dn,a); printf(%0+8dn,a); printf(%o,%#o,%X,%#Xn,b,b,b,b); 2.4.2 scanf()函數函數 與printf()函數相對應,scanf()函數是用于輸入的函數,即從鍵盤接收信息,并將信息按照指定的格式進行轉換后存放到指定的變量中。1.scanf()函數的一般形式為函數的一般形式為scanf(格式控制串,輸入變量地址列表); 其中“格式控制串”和“輸入變量地址列表”是scanf()函數的參數,“格式控制串”是用雙引號括起來的字符串,包括兩種信息:格式說明符和原樣輸入字符。2. 格式說明符和原樣輸入字符格式說明符和原樣輸入字符(1)格
25、式說明符)格式說明符 格式說明符由格式說明符由“%”開頭,格式字符結尾。如開頭,格式字符結尾。如%d,%f,%c等,作用分別是將輸入的數據等,作用分別是將輸入的數據轉換為整型、浮點型和字符型后,存放到指定轉換為整型、浮點型和字符型后,存放到指定的變量中。的變量中。(2)原樣輸入字符)原樣輸入字符 原樣輸入字符是普通字符。在從鍵盤輸入數據原樣輸入字符是普通字符。在從鍵盤輸入數據時,這些字符要原樣輸入。例如:時,這些字符要原樣輸入。例如:scanf(a=%d:c=%f,&a,&c);中中“a=”和和“b=”及冒號都是原樣輸入字符,在輸入時應以如下及冒號都是原樣輸入字符,在輸入時應以
26、如下方式輸入:方式輸入: a=10:c=4.53. 輸入變量地址列表輸入變量地址列表 “輸入變量地址列表”即是存放數據的變量的地址,可以是一個,也可以是多個。“輸入變量地址列表”中如果有多個變量時,變量之間要用逗號“,”間隔開,書寫時要在每個變量前面加“&”符號,其后的變量名指明了接收輸入數據的變量。【例【例1.2.4】格式控制符】格式控制符%c的使用。的使用。/* ex1_2_4.c */#include stdio.hvoid main()char ch1,ch2;scanf(%c%c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch
27、2);【例1.2.5】格式控制符%s的使用/* ex1_2_5.C */#include stdio.hvoid main()char str20;scanf(%s ,str); /*從鍵盤接收一串字符從鍵盤接收一串字符*/printf(str=%sn,str);【例1.2.6】附加格式符*的使用/* ex1_2_6.C */#include stdio.hvoid main()char ch1,ch2;scanf(%c%*c%c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2);【例1.2.7】附加格式符m的使用/* ex1_2_7.C */#include stdio.hvoid main()float a,b;scanf(%4.2f%f,&a,&b);printf(a=%f,b=%fn,a,b);遇以下情況認為該數據輸入結束:遇以下情況認為該數據輸入結束:遇空格、遇空格、TAB、或回車;、或回車;遇寬度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 4498.1-2025橡膠灰分的測定第1部分:馬弗爐法
- GB 45669.4-2025黃河流域工業用水定額第4部分:水泥
- 2025年信息處理考試深化試題及答案
- 高考語文復習突破口及試題與答案2023
- 行政管理的道德困境與試題答案解析
- 高考數學集中訓練模塊試題及答案
- 倉庫出現火災應急預案(3篇)
- 高考數學解題效率提升分享試題及答案
- 通信公司火災應急預案(3篇)
- 采油樹火災應急預案(3篇)
- 河南省青桐鳴大聯考普通高中2024-2025學年高三考前適應性考試地理試題及答案
- 管道勞務分包協議書
- 2025年中考理化生實驗操作考試考務培訓大綱
- 拆遷服務方案
- 成人經鼻胃管喂養臨床實踐指南
- 完整版混凝土結構設計原理課程設計——單向板肋梁樓蓋設計計算書
- 尾礦庫基礎知識(金屬非金屬礦山尾礦庫安全技術中心)
- LED燈具絕緣和耐壓測試說明
- 第八章食品包裝材料的安全監督與管理 ppt課件
- 《市場調查與預測》說課
- 李家沱大橋健康監測實施方案
評論
0/150
提交評論