




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第2章章 基本數據類型和運算基本數據類型和運算第第1章章 C語言概述語言概述第第2章章 基本數據類型和運算基本數據類型和運算第第3章章 結構化程序設計結構化程序設計第第5章章 函數函數第第6章章 指針指針第第7章章 復合結構類型復合結構類型第第8章章 編譯預處理編譯預處理第第4章章 數組及字符串數組及字符串課程概述課程概述 附錄附錄2.1 C語言的數據類型語言的數據類型2.2 常量及其類型常量及其類型2.3 變量及其類型變量及其類型2.4 運算符與表達式運算符與表達式2.5 不同數據類型的輸出不同數據類型的輸出2.6 不同數據類型的輸入不同數據類型的輸入 第第9章章 位運算位運算第第10章章
2、 文件文件基本數據類型和運算基本數據類型和運算第第2章章教學目標教學目標 掌握掌握C語言提供的整型、雙精度型、字符型語言提供的整型、雙精度型、字符型和字符串常量的表示方法,變量的定義和初始和字符串常量的表示方法,變量的定義和初始化方法化方法 掌握算術運算、賦值運算、逗號運算、關掌握算術運算、賦值運算、逗號運算、關系運算和邏輯運算的實現和運算規則系運算和邏輯運算的實現和運算規則 了解測試數據長度運算和位運算的基本功了解測試數據長度運算和位運算的基本功能能 掌握不同類型數據的輸入和輸出操作掌握不同類型數據的輸入和輸出操作2.1.1 C語言具有的數據類型語言具有的數據類型什么是數據類型?什么是數據類
3、型? 數據類型是指數據的內在表現形式數據類型是指數據的內在表現形式。不同的數據類型在內存中的存儲方式不同,在不同的數據類型在內存中的存儲方式不同,在內存中所占的字節數也不相同內存中所占的字節數也不相同。C語言的數據類型語言的數據類型2.1 C語言的數據類型語言的數據類型2.1.2 C語言的基本數據類型語言的基本數據類型什么是基本數據類型?什么是基本數據類型? 基本數據類型是不可再分的最基本的數據類型,基本數據類型是不可再分的最基本的數據類型,是構造其他數據類型的基礎。是構造其他數據類型的基礎。C語言的基本數據類型語言的基本數據類型2.1 C語言的數據類型語言的數據類型數據類型數據類型關鍵字關鍵
4、字字符型字符型char整型整型int浮點(單精度)型浮點(單精度)型float雙精度型雙精度型double無值型無值型voidchar型數據可以用型數據可以用signed、unsigned加以修飾,即可以加以修飾,即可以有有char、signed char、unsigned char 三種形式三種形式C語言生成目標代碼質量高,程序執行效率高。語言生成目標代碼質量高,程序執行效率高。2.1.3 基本數據類型的修飾基本數據類型的修飾2.1 C語言的數據類型語言的數據類型2. 八進制整數八進制整數3. 十六進制整數十六進制整數十進制是整數的通常寫法,十進制整數十進制是整數的通常寫法,十進制整數沒有前
5、綴,其數碼為沒有前綴,其數碼為09。例如:例如:437、-124、65535、3723都是合法都是合法的十進制整數;而下列各數是不合法的的十進制整數;而下列各數是不合法的十進制整數:十進制整數: 0 x46:含有非法的前綴:含有非法的前綴0 x。 46A:含有非十進制數碼:含有非十進制數碼A。2.2 常量及其類型常量及其類型1. 十進制整數十進制整數2.2.1 整型常量整型常量2. 八進制整數八進制整數3. 十六進制整數十六進制整數八進制整數必須以數字八進制整數必須以數字0開頭,即以開頭,即以0作為八進制作為八進制數的前綴。數碼取值范圍為數的前綴。數碼取值范圍為07。以下各數是合法的八進制數:
6、以下各數是合法的八進制數: 0123:表示八進制數:表示八進制數123,即,即(123)8,其值為,其值為182+281+380,等于十進制數,等于十進制數83。 0101:表示十進制數:表示十進制數65。 -011:表示八進制數:表示八進制數-11,即十進制數,即十進制數-9。以下各數不是合法的八進制數:以下各數不是合法的八進制數: 389:由于無前綴:由于無前綴0,所以是非法的八進制數。,所以是非法的八進制數。 092B4:包含了非八進制數碼:包含了非八進制數碼B。2.2 常量及其類型常量及其類型1. 十進制整數十進制整數2.2.1 整型常量整型常量2. 八進制整數八進制整數3. 十六進制
7、整數十六進制整數十六進制整常數的前綴為十六進制整常數的前綴為0X或或0 x。其數碼為。其數碼為09,AF或或af。以下各數是合法的十六進制整常數:以下各數是合法的十六進制整常數: 0X123:代表十六進制的:代表十六進制的123,即,即(123)16=1162+2161+3160=256+32+3=291。 0XA0:表示十進制為:表示十進制為160。 -0X12:表示十進制為:表示十進制為-18。下面各數是不合法的十六進制整常數:下面各數是不合法的十六進制整常數: 7A:沒有前綴:沒有前綴0X。 0X8K:含有非十六進制數碼:含有非十六進制數碼K。2.2 常量及其類型常量及其類型1. 十進制
8、整數十進制整數2.2.1 整型常量整型常量2.2.2 實型常量實型常量1. 小數形式小數形式 2. 指數形式指數形式2.2 常量及其類型常量及其類型由正負號、整數部分、十進制由正負號、整數部分、十進制小數點和小數部分組成。小數點和小數部分組成。整數部分和小數部分是由數字整數部分和小數部分是由數字09和小數點組成,其中和小數點組成,其中小數點是不能缺少的。小數點是不能缺少的。例如:例如:0.0、32.0、4.654等均為合法的實等均為合法的實數。數。3. 程序舉例程序舉例2.2.2 實型常量實型常量1. 小數形式小數形式 2. 指數形式指數形式2.2 常量及其類型常量及其類型在小數的基礎上,后面
9、加階碼在小數的基礎上,后面加階碼標志(標志(“e”或或“E”)以及階)以及階碼組成。其一般形式為:碼組成。其一般形式為: a E n或或 a e n其中的其中的a為十進制數,為十進制數,E或或e為為階碼標志,階碼標志,n為十進制整數。為十進制整數。需要注意的是,字母需要注意的是,字母“e”或或“E”之前必須有數字,且之前必須有數字,且e后面的指數必須為整數,如后面的指數必須為整數,如e5、3.24e3.2、e等都是不合等都是不合法的指數形式。法的指數形式。3. 程序舉例程序舉例2.2.2 實型常量實型常量1. 小數形式小數形式 2. 指數形式指數形式2.2 常量及其類型常量及其類型例例2.1以
10、實數的形式輸出三個數。以實數的形式輸出三個數。main() printf(%fn ,365.); printf(%fn ,365); printf(%fn ,365f);該程序的運行結果如下:該程序的運行結果如下:3. 程序舉例程序舉例365.000000 0.000000 365.0000002.2.3 字符型常量字符型常量1. 單引號表示法單引號表示法 2. 轉義字符表示法轉義字符表示法2.2 常量及其類型常量及其類型對于可顯示的字符常量,可直對于可顯示的字符常量,可直接用單引號將該字符括起來,接用單引號將該字符括起來,如如a、9、Z、=、+、?等。等。也可用字符的也可用字符的ASCII碼
11、值表示碼值表示字符,如十進制數字符,如十進制數85表示大表示大寫字母寫字母U,八進制數,八進制數0102表示大寫字母表示大寫字母B。3. 字符常量的特點字符常量的特點2.2.3 字符型常量字符型常量1. 單引號表示法單引號表示法 2. 轉義字符表示法轉義字符表示法2.2 常量及其類型常量及其類型轉義字符是一種特殊的字符轉義字符是一種特殊的字符常量。常量。轉義字符以反斜線轉義字符以反斜線“”開頭,開頭,后面跟一個或幾個字符。后面跟一個或幾個字符。轉義字符具有特定的含義,轉義字符具有特定的含義,它不同于字符原有的意義,它不同于字符原有的意義,所以稱所以稱“轉義轉義”字符。字符。常用的轉義字符及其含
12、義如常用的轉義字符及其含義如下表所示。下表所示。3. 字符常量的特點字符常量的特點2.2.3 字符型常量字符型常量2.2 常量及其類型常量及其類型轉義字符轉義字符含義含義ASCII代碼代碼 n換行換行 10r回車回車13f換頁換頁12t水平制表(水平制表(Tab)9v垂直制表垂直制表11b退格符(退格符(backspace)8反斜杠符反斜杠符 92 單引號符單引號符 39” 雙引號符雙引號符 34ddd 13位八進制數所代表的字符位八進制數所代表的字符 xhh 12位十六進制數所代表的字符位十六進制數所代表的字符 2.2.3 字符型常量字符型常量1. 單引號表示法單引號表示法 2. 轉義字符表
13、示法轉義字符表示法2.2 常量及其類型常量及其類型(1)字符常量只能用單引號括)字符常量只能用單引號括起來,不能用雙引號或其他起來,不能用雙引號或其他符號。符號。(2)字符常量只能是單個字符,)字符常量只能是單個字符,不能是字符串。不能是字符串。(3)C語言對字符型和整型是語言對字符型和整型是不加區分的,字符型常量被不加區分的,字符型常量被視為視為1字節的整數,其值就是字節的整數,其值就是該字符的該字符的ASCII碼,可以像碼,可以像整數一樣參加數值運算。例整數一樣參加數值運算。例如,如,C的的ASCII碼為碼為67,C-2的值為的值為65,即字符,即字符A的的ASCII碼。碼。3. 字符常量
14、的特點字符常量的特點2.2.4 字符串常量字符串常量1. 字符串常量字符串常量 2. 字符串的長度字符串的長度2.2 常量及其類型常量及其類型3. 字符串常量與字字符串常量與字符常量的區別符常量的區別字符串常量是用雙引號括起來的零個或字符串常量是用雙引號括起來的零個或多個字符序列。多個字符序列。例如:例如:“ ”,“Gold human!”,“010278”等都是字符串常量。兩個雙引號連寫等都是字符串常量。兩個雙引號連寫( )表示空字符串。)表示空字符串。當字符串中包含像單引號、雙引號或反當字符串中包含像單引號、雙引號或反斜杠線這類有特定用途的字符時,應該斜杠線這類有特定用途的字符時,應該分別
15、使用轉義字符,即分別用分別使用轉義字符,即分別用、“、來表示。來表示。例如:例如:“He said: hello!”代表的英代表的英文句子應該是文句子應該是“ He said: hello! ”C語言規定,字符串中的字母是區分大語言規定,字符串中的字母是區分大小寫的,所以小寫的,所以a和和A是不同的字符是不同的字符串。串。2.2.4 字符串常量字符串常量1. 字符串常量字符串常量 2. 字符串的長度字符串的長度2.2 常量及其類型常量及其類型3. 字符串常量與字字符串常量與字符常量的區別符常量的區別一個字符串中所有字符的個數稱一個字符串中所有字符的個數稱為該字符串的長度,其中每個轉為該字符串的
16、長度,其中每個轉義字符只當做一個字符。義字符只當做一個字符。例如,字符串例如,字符串1234567,xyz,BbedsQd,ABCD,101102 x43x44的長度分別為的長度分別為7、3、7、6、4。C語言規定,每個字符串在內存中語言規定,每個字符串在內存中占用的字節數等于字符串的長度占用的字節數等于字符串的長度加加1。其中最后一個字節存放的字。其中最后一個字節存放的字符稱為符稱為“空字符空字符”,其,其ASCII碼為碼為0,書寫時常用轉義字符,書寫時常用轉義字符0來表來表示,是字符串結束的標記。示,是字符串結束的標記。2.2.4 字符串常量字符串常量1. 字符串常量字符串常量 2. 字符
17、串的長度字符串的長度2.2 常量及其類型常量及其類型3. 字符串常量與字字符串常量與字符常量的區別符常量的區別(1)字符常量只能用單引號括)字符常量只能用單引號括起來,不能用雙引號或其他符號。起來,不能用雙引號或其他符號。(2)字符常量只能是單個字符,)字符常量只能是單個字符,不能是字符串。不能是字符串。(3)C語言對字符型和整型是不語言對字符型和整型是不加區分的,字符型常量被視為加區分的,字符型常量被視為1字節的整數,其值就是該字符的字節的整數,其值就是該字符的ASCII碼,可以像整數一樣參加碼,可以像整數一樣參加數值運算。數值運算。例如,例如,C的的ASCII碼為碼為67,C-2的值為的值
18、為65,即字符,即字符A的的ASCII碼。碼。2.2.5 符號常量符號常量1. 符號常量的定義符號常量的定義 2.符號常量的優點符號常量的優點 2.2 常量及其類型常量及其類型宏定義是用指定的標識符來宏定義是用指定的標識符來代表一串字符,其一般形式代表一串字符,其一般形式為為:#define 標識符標識符 字符串字符串 例如:例如:#define PI 3.14159265其中,標識符其中,標識符PI稱為宏名,稱為宏名,也叫符號常量,習慣上用大也叫符號常量,習慣上用大寫英文字母表示;字符串寫英文字母表示;字符串3.14159265稱為宏體,沒有稱為宏體,沒有類型和值的含義。類型和值的含義。2.
19、2.5 符號常量符號常量1. 符號常量的定義符號常量的定義 2.符號常量的優點符號常量的優點 2.2 常量及其類型常量及其類型const定義的符號常量既有定義的符號常量既有類型又有值,與宏定義不類型又有值,與宏定義不同,其一般的形式為:同,其一般的形式為:const 數據類型數據類型 標識符標識符=常常量表達式;量表達式;例如:例如: const int max=300; const float x=max+3.14;上述語句定義了一個整型上述語句定義了一個整型符號常量符號常量max,其值等于,其值等于300;一個浮點型符號常量;一個浮點型符號常量x ,其值為,其值為303.14。2.2.5
20、符號常量符號常量1. 符號常量的定義符號常量的定義 2.符號常量的優點符號常量的優點 2.2 常量及其類型常量及其類型使用使用const定義符號常量應注意以下幾點定義符號常量應注意以下幾點:(1)const定義是以關鍵字定義是以關鍵字const開頭,以分開頭,以分號結尾的號結尾的C語言語句。語言語句。(2)每個)每個const語句可以定義多個同類型的語句可以定義多個同類型的符號常量,相互之間用逗號隔開符號常量,相互之間用逗號隔開。(3)const 定義既可以出現在函數外部,也定義既可以出現在函數外部,也可以出現在函數內部。不同位置定義的符號可以出現在函數內部。不同位置定義的符號常量的作用域也不
21、同常量的作用域也不同。(4)const定義是在程序編譯時完成對標識定義是在程序編譯時完成對標識符的賦值,這個值被存放在內存的常量區中,符的賦值,這個值被存放在內存的常量區中,而宏定義則是在編譯時完成標識符的賦值,而宏定義則是在編譯時完成標識符的賦值,在編譯時按上下文對替換的字符串進行解釋,在編譯時按上下文對替換的字符串進行解釋,宏名作為標識符被放在內存的代碼區中。宏名作為標識符被放在內存的代碼區中。2.3.1 變量及其定義變量及其定義1. 什么是變量什么是變量2. 變量的定義格式變量的定義格式2.3 變量及其類型變量及其類型3. 變量定義時的注變量定義時的注意事項意事項變量是指在程序運行過程中
22、其變量是指在程序運行過程中其值可以發生變化的量。值可以發生變化的量。一般情況下,變量用來保存程一般情況下,變量用來保存程序運行過程中輸入的數據、計序運行過程中輸入的數據、計算獲得的中間結果以及程序的算獲得的中間結果以及程序的最終結果。最終結果。2.3.1 變量及其定義變量及其定義1. 什么是變量什么是變量2. 變量的定義格式變量的定義格式2.3 變量及其類型變量及其類型3. 變量定義時的注變量定義時的注意事項意事項變量的定義格式為:變量的定義格式為: 類型說明符類型說明符 變量名表變量名表;其中,類型說明符包括其中,類型說明符包括int、float、double、char等,用來指定變量的數據
23、類型;變量名等,用來指定變量的數據類型;變量名表如果有多個變量,則彼此間要用逗號分隔表如果有多個變量,則彼此間要用逗號分隔開;分號是語句結束符。開;分號是語句結束符。例如:例如: int x; /*定義了一個類型為整型的變量定義了一個類型為整型的變量x*/int y, z; /*定義了一個整型變量定義了一個整型變量y和一個整型和一個整型變量變量z*/float a,b,c; /*定義了三個浮點型變量定義了三個浮點型變量a、b、c*/2.3.1 變量及其定義變量及其定義1. 什么是變量什么是變量2. 變量的定義格式變量的定義格式2.3 變量及其類型變量及其類型3. 變量定義時的注變量定義時的注意
24、事項意事項(1)允許在一個類型說明符后,)允許在一個類型說明符后,定義多個相同類型的變量。各變定義多個相同類型的變量。各變量名之間用逗號間隔。量名之間用逗號間隔。(2)類型說明符與變量名之間)類型說明符與變量名之間至少用一個空格間隔。至少用一個空格間隔。(3)變量定義必須放在變量使)變量定義必須放在變量使用之前,一般放在函數體的開頭用之前,一般放在函數體的開頭部分。部分。(4)最后一個變量名之后必須)最后一個變量名之后必須以分號以分號“;”結尾。結尾。2.3.2 整型變量整型變量2.3 變量及其類型變量及其類型整型整型變量變量的基的基本類本類型符型符為為int 可以根據數值的范圍將整型變量定義
25、為基本整型、短可以根據數值的范圍將整型變量定義為基本整型、短整型、長整型和無符號型,具體如下所述整型、長整型和無符號型,具體如下所述:(1)基本整型:類型說明符為)基本整型:類型說明符為int。(2)短整型:類型說明符為)短整型:類型說明符為short int或或short。(3)長整型:類型說明符為)長整型:類型說明符為long int或或long。(4)無符號型:類型說明符為)無符號型:類型說明符為unsigned。其中,無符號型。其中,無符號型又可與上述三種類型匹配而構成如下類型:又可與上述三種類型匹配而構成如下類型:無符號基本型:類型說明符為無符號基本型:類型說明符為unsigned
26、int或或unsigned。無符號短整型:類型說明符為無符號短整型:類型說明符為unsigned short。無符號長整型:類型說明符為無符號長整型:類型說明符為unsigned long。2.3.2 整型變量整型變量2.3 變量及其類型變量及其類型各種無符號類型的量所占的內存空間字節數與相應的有符號類型的量相同。各種無符號類型的量所占的內存空間字節數與相應的有符號類型的量相同。有符號整型變量的最大取值為有符號整型變量的最大取值為32767,而無符號整型變量的最大取值為,而無符號整型變量的最大取值為65535。以以IBM PC機為例,各類整型變量所分配的內存字節數及表示范圍如表所示。機為例,各
27、類整型變量所分配的內存字節數及表示范圍如表所示。類型類型類型說明符類型說明符字節字節取值范圍取值范圍 基本整型基本整型 int 2-3276832767 短整型短整型short int 2-3276832767 長整型長整型long int 4-21474836482147483647 無符號整型無符號整型unsigned int 2065535 無符號長整型無符號長整型unsigned long 404294967295 2.3.2 變量及其定義變量及其定義2.3 變量及其類型變量及其類型3. 例例2.3的調整的調整1. 例例2.2例例2.2整型變量的定義與使用舉例一。整型變量的定義與使用舉
28、例一。#includemain() int x,y,m,n; /* 指定指定x,y,m,n 為整型變量為整型變量 */ unsigned u; /* 指定指定u 為無符號整型變量為無符號整型變量 */ x=-21; y=18; u=40; m=x+u; n=y+u; printf(x+u=%d,y+u=%dn,m,n);程序的運行結果為:程序的運行結果為:x+u=19,y+u=58 2. 例例2.32.3.2 變量及其定義變量及其定義2.3 變量及其類型變量及其類型2. 例例2.31. 例例2.2#includemain() int a,b,c,d; /*定義整型變量定義整型變量a、b、c、d
29、*/ long x,y; /*定義長整型變量定義長整型變量x、y*/ x=7; /*變量賦初值變量賦初值*/ y=8; a=9; b=10; c=x+a; /*求求x與與a的加和的加和*/ d=y+b; /*求求y與與b的加和的加和*/ printf(c=x+a=%d,d=y+b=%dn,c,d); /*輸出輸出c、d值值*/ 程序的輸出結果為:程序的輸出結果為:c=x+a=16, d=y+b=183. 例例2.3的調整的調整2.3.2 變量及其定義變量及其定義2.3 變量及其類型變量及其類型2. 例例2.31. 例例2.2 C語言中,可以在程序的一行中寫入多條語句,因語言中,可以在程序的一行
30、中寫入多條語句,因此上面的程序可以調整為:此上面的程序可以調整為:main() int a,b,c,d; long x,y; x=7; y=8; a=9; b=10; c=x+a; d=y+b; printf(c=x+a=%d,d=y+b=%dn,c,d);3. 例例2.3的調整的調整調整后的程序只是其表示形式發生了變化,程序的本質調整后的程序只是其表示形式發生了變化,程序的本質并沒有改變,該程序的運行結果為:并沒有改變,該程序的運行結果為: c=x+a=16, d=y+b=182.3.3 實型變量實型變量2.3 變量及其類型變量及其類型在在C語言中,實型變量分為單精度、雙精度兩類,具體如語言
31、中,實型變量分為單精度、雙精度兩類,具體如下所述:下所述: 單精度型:類型說明符為單精度型:類型說明符為float。 雙精度型:類型說明符為雙精度型:類型說明符為double。在一般系統中一個在一般系統中一個float型的數據占型的數據占4個字節(個字節(32位)內存位)內存空間,一個空間,一個double型的數據占型的數據占8個字節(個字節(64位)內存空間。位)內存空間。單精度實數提供單精度實數提供7位有效數字,雙精度實數提供位有效數字,雙精度實數提供1516位有位有效數字,數值的取值范圍隨機器系統而異。效數字,數值的取值范圍隨機器系統而異。每一個實型變量都應在使用前進行定義。例如:每一個
32、實型變量都應在使用前進行定義。例如:float m,n; /*定義兩個變量定義兩個變量x和和y,并且指定它們為單精度,并且指定它們為單精度實型量實型量*/double a,b,c; /*指定指定a、b、c為雙精度實型量為雙精度實型量*/2.3.3 實型變量實型變量2.3 變量及其類型變量及其類型#includemain()float a;double b;a=5555.55555;b=5555.5555555555;printf(%fn%fn,a,b);該程序的運行結果如下:該程序的運行結果如下:5555.5556645555.5555562.3.4 字符型變量字符型變量2.3 變量及其類型變
33、量及其類型字符型變量用來存放字符常量,一個字符型字符型變量用來存放字符常量,一個字符型變量只能存放一個字符,不要存放一個字符變量只能存放一個字符,不要存放一個字符串。字符變量的類型說明符是串。字符變量的類型說明符是char。下面是幾個字符型變量的定義:下面是幾個字符型變量的定義:char m1,m2,m3;上述語句將上述語句將m1、m2和和m3定義為字符型變量,定義為字符型變量,其內可以各放一個字符,下面給這三個字符其內可以各放一個字符,下面給這三個字符變量分別賦值變量分別賦值a、b、c:m1=a;m2=b;m3=c;2.3.4 字符型變量字符型變量2.3 變量及其類型變量及其類型#inclu
34、demain() char c1,c2;c1=97;c2=98;printf(%c %c ,c1,c2);printf(%d %dn,c1,c2);c1=c1-32; /*小寫字母的小寫字母的ASCII碼值比碼值比 對應的大寫字母大對應的大寫字母大32*/c2=c2-(a-A);printf(%c %cn,c1,c2);程序的運行結果為:程序的運行結果為:a b 97 98A B2.3.5 字符串變量字符串變量2.3 變量及其類型變量及其類型 C語言沒有專門的語言沒有專門的字符串變量,可以字符串變量,可以用字符數組來實現。用字符數組來實現。詳見第詳見第4章的介紹。章的介紹。2.4.1 運算符及
35、運算對象運算符及運算對象2.4 運算符與表達式運算符與表達式2. 運算對象運算對象基本運算符基本運算符C C語言運算符號語言運算符號專用運算符專用運算符算術運算符算術運算符關系運算符關系運算符邏輯運算符邏輯運算符賦值運算符賦值運算符逗號運算符逗號運算符長度運算符長度運算符位運算符位運算符基本算術運算符基本算術運算符自增自減運算符自增自減運算符位移位運算符位移位運算符位邏輯運算符位邏輯運算符強制類型轉換運算符強制類型轉換運算符下標運算符下標運算符成員運算符成員運算符指針運算符指針運算符2.4.1 運算符及運算對象運算符及運算對象2.4 運算符與表達式運算符與表達式2. 表達式語句表達式語句表達式
36、是用運算符與圓括號將操作數(運算表達式是用運算符與圓括號將操作數(運算對象)連接起來所構成的式子。對象)連接起來所構成的式子。C語言的操作數包括常量、變量和函數值等。語言的操作數包括常量、變量和函數值等。例如,表達式例如,表達式sin(2.0)+(a-b)*5/sqrt(2.0)中包中包括的運算符有括的運算符有+、 -、*、/,操作數包括常量,操作數包括常量5,變量,變量a、b以及函數以及函數sin(2.0)和和sqrt(2.0)。表達式按照運算符的運算規則進行運算可以表達式按照運算符的運算規則進行運算可以獲得一個值,稱為獲得一個值,稱為“表達式的值表達式的值”。1. 表達式的定義表達式的定義
37、2.4.2 表達式表達式2.4 運算符與表達式運算符與表達式2. 表達式語句表達式語句C語言中,在一個表達式的后面加上分號語言中,在一個表達式的后面加上分號“;”就構成了表達式語句,即簡單語句。有就構成了表達式語句,即簡單語句。有的表達式語句是有意義的簡單語句,例如:的表達式語句是有意義的簡單語句,例如:x=x+1;和和x+;都表示使都表示使x單元的內容加單元的內容加1。而有的表達式語句是無意義的,例如:而有的表達式語句是無意義的,例如:3+;是無意義的表達式語句,因為這條語句沒有是無意義的表達式語句,因為這條語句沒有引起任何存儲單元中數據的變化。引起任何存儲單元中數據的變化。1. 表達式的定
38、義表達式的定義2.4.2 表達式表達式2.4 運算符與表達式運算符與表達式2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級(1)加法運算符)加法運算符“+”:加法運算符為雙:加法運算符為雙目運算符,即應有兩個操作數參與加法目運算符,即應有兩個操作數參與加法運算。如運算。如5+4等。但等。但“+”也可作正值運算也可作正值運算符,此時為單目運算,如符,此時為單目運算,如+5等。等。(2)減法運算符)減法運算符“-”:減法運算符為雙:減法運算符為雙目運算符。但目運算符。但“-”也可作負值運算符,此也可作負值運算符,此時為單目運算,
39、如時為單目運算,如-5等。等。(3)乘法運算符)乘法運算符“*”:乘法運算符為:乘法運算符為雙目運算符,如雙目運算符,如8*9。但。但“*”在指針運在指針運算中也可以表示單目的算中也可以表示單目的“取內容取內容”運算。運算。1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級(4)除法運算符)除法運算符“/”:除法運算符為雙:除法運算符為雙目運算符。參與的操作數均為整型時,目運算符。參與的操作數均為整型時,結果也為整型,舍去小數
40、。如果運算量結果也為整型,舍去小數。如果運算量中有一個是實型,則結果為實型。中有一個是實型,則結果為實型。(5)求余運算符)求余運算符“%”:求余運算符也:求余運算符也叫求模運算,為雙目運算符,用來求兩叫求模運算,為雙目運算符,用來求兩個整數的的余數,如:個整數的的余數,如:9%2=1。1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級(4)除法運算符)除法運算符“/”:除法運算符為雙:除法運算符為雙目運算符。參與的操作數均為
41、整型時,目運算符。參與的操作數均為整型時,結果也為整型,舍去小數。如果運算量結果也為整型,舍去小數。如果運算量中有一個是實型,則結果為實型。中有一個是實型,則結果為實型。(5)求余運算符)求余運算符“%”:求余運算符也:求余運算符也叫求模運算,為雙目運算符,用來求兩叫求模運算,為雙目運算符,用來求兩個整數的的余數,如:個整數的的余數,如:9%2=1。1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級1. 基本算數運算符基本算數
42、運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式v 基本算術運算符的運算對象、基本算術運算符的運算對象、運算規則與結合性如表所示。運算規則與結合性如表所示。對象數對象數名稱名稱運算符運算符運算規則運算規則結合性結合性單目單目正正+取正值取正值自右向左自右向左負負取負值取負值雙目雙目加加+加法加法自左向右自左向右減減減法減法乘乘*乘法乘法除除/除法除法模模%整除取余整除取余2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與
43、表達式運算符與表達式例例2.6 運算符運算符“/”應用舉例應用舉例#includemain()printf(%d,%dn,30/8,-30/8);printf(%f,%fn,30.0/8,-30.0/8);程序的運行結果為:程序的運行結果為:3,-33.750000,-3.7500002. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級自增自減運算符都是單目運算符,用來對整自增自減運算符都是單目運算符,用來對整型、字符型、指針型以及數組元素等變量進型、字符型、指針型以及數組元素等變量進行算術運算,其運算結果與原來的類型相同,行算
44、術運算,其運算結果與原來的類型相同,并存回原來的運算對象,例如:并存回原來的運算對象,例如:(1)+m:先使:先使m的值加的值加1,再使用變量,再使用變量m。(2)m+:先使用:先使用m的值,再使變量的值,再使變量m加加1。(3)-m:先使:先使m的值減的值減1,再使用變量,再使用變量m。(4)m-:先使用:先使用m的值,再使變量的值,再使變量m減減1。1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級當出現難以區分的若干個當
45、出現難以區分的若干個+或或- -組成的表達組成的表達式運算時,式運算時,C語言規定,自左向右取盡可能語言規定,自左向右取盡可能多的符號組成運算符。多的符號組成運算符。例如:設整型變量例如:設整型變量m和和n的值均為的值均為6,則:,則:m +n:應理解為:應理解為(m +)+n,最后的計算,最后的計算結果為結果為12,m的值為的值為7,n不變。不變。m-n:則理解為:則理解為(m-)-n,最后的計算結果,最后的計算結果為為0,m的值為的值為5,n不變。不變。1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式2. 自增自減運算符自增自減運算符3
46、. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式例例2.7 自增自減運算符應用舉例。自增自減運算符應用舉例。#includemain()int y=6;printf(%dn,+y);printf(%dn,-y);printf(%dn,y+);printf(%dn,y-);printf(%dn,-y+);printf(%dn,-y-);程序的輸程序的輸出結果為:出結果為:7667-6-72. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符
47、的結算術運算符的結合性和優先級合性和優先級1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式例例2.8由自增運算符構成的表達式應用由自增運算符構成的表達式應用舉例。舉例。#includemain( )int p,q;int x=8,y=8;p=(x+)+(x+)+(x+);q=(+y)+(+y)+(+y);printf(%d,%d,%d,%d,p,q,x,y);程序的輸出結果為:程序的輸出結果為:24,33,11,112. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級1. 基
48、本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式v 算術表達式是用算術運算符連接數算術表達式是用算術運算符連接數值型的運算對象構成的表達式,用值型的運算對象構成的表達式,用來完成數值計算的功能。來完成數值計算的功能。 如如5%6+12,(3+5)/(6%4)等。等。v 使用算術運算符時,應注意以下幾使用算術運算符時,應注意以下幾點:點:(1)乘法運算符)乘法運算符“*”在表達式中既不在表達式中既不能省略,也不能用能省略,也不能用“.”或或“”代替代替;除法運算符也不能用;除法運算符也不能用“”代替。代替。(2)C語言沒有乘方運算,可以通過語言沒有乘
49、方運算,可以通過連乘的方式實現乘方運算,也可以連乘的方式實現乘方運算,也可以使用數學函數,如使用數學函數,如pow(10,n)表示表示10的的n次方,次方,pow(x,y)表示表示x的的y次方。次方。2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級1. 基本算數運算符基本算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式(3)表達式中不允許使用方括號或花)表達式中不允許使用方括號或花括號,但允許使用多重圓括號嵌套括號,但允許使用多重圓括號嵌套配對使用。如配對使用。如x/(12*(a+b)。(4)算
50、術表達式應能正確地表達數學)算術表達式應能正確地表達數學公式。例如:數學表達式公式。例如:數學表達式(4+y)/2b對對應 的應 的 C 語 言 算 術 表 達 式 為 :語 言 算 術 表 達 式 為 :(4+y)/(2*b)或或(4+y)/2/b。(5)算術表達式的結果應該不超過其)算術表達式的結果應該不超過其所能表示的數的范圍。例如,最大所能表示的數的范圍。例如,最大的整數是的整數是32767,則,則32767+12就是錯就是錯誤的結果。誤的結果。2. 自增自減運算符自增自減運算符3. 算術表達式算術表達式4. 算術運算符的結算術運算符的結合性和優先級合性和優先級1. 基本算數運算符基本
51、算數運算符2.4.3 算術運算符算術運算符2.4 運算符與表達式運算符與表達式v 運算符的結合性是指如果一個操作運算符的結合性是指如果一個操作數左邊和右邊的兩個運算符的優先數左邊和右邊的兩個運算符的優先級相同,應該優先計算的操作符。級相同,應該優先計算的操作符。v 計算機在進行表達式的計算時,通計算機在進行表達式的計算時,通常嚴格按照運算符的優先級和結合常嚴格按照運算符的優先級和結合性進行,就算術表達式而言,括號性進行,就算術表達式而言,括號最優先,其次是一元運算符,然后最優先,其次是一元運算符,然后是乘、除和求模,最后是加、減;是乘、除和求模,最后是加、減;當同一優先級的運算符同時出現時當同
52、一優先級的運算符同時出現時,按它們的結合性確定其優先次序,按它們的結合性確定其優先次序。詳見附錄一。詳見附錄一。3. 關系表達式關系表達式4. 關系運算符的關系運算符的優先次序優先次序1. 關系運算符關系運算符2.4.4 關系術運算符關系術運算符2.4 運算符與表達式運算符與表達式v 所謂所謂“關系運算關系運算”實際上是實際上是“比較比較運算運算”,首先將兩個值進行比較,首先將兩個值進行比較,然后判斷其比較的結果是否符合給然后判斷其比較的結果是否符合給定的條件。定的條件。v 關系運算符的運算對象、運算規則關系運算符的運算對象、運算規則和結合性如表所示。和結合性如表所示。對象數目對象數目名稱名稱
53、運算符運算符運算規則運算規則結合性結合性雙目雙目小于小于條件滿足則條件滿足則為真,結果為真,結果為為1;否則;否則為假,結果為假,結果為為0。自左向自左向右右小于等于小于等于大于等于大于等于=等于等于= =不等于不等于!=3. 關系表達式關系表達式4. 關系運算符的關系運算符的優先次序優先次序1. 關系運算符關系運算符2.4.4 關系術運算符關系術運算符2.4 運算符與表達式運算符與表達式v 在語言中所有關系運算符優先級在語言中所有關系運算符優先級別如表所示。別如表所示。序號序號關系運算符關系運算符優先級別優先級別1優先級相同優先級相同(級別高)(級別高)24=5= =優先級相同優先級相同(級
54、別低)(級別低)6!=3. 關系表達式關系表達式4. 關系運算符的關系運算符的優先次序優先次序1. 關系運算符關系運算符2.4.4 關系術運算符關系術運算符2.4 運算符與表達式運算符與表達式v 用關系運算符將兩個表達式連接起用關系運算符將兩個表達式連接起來的式子稱為關系表達式。來的式子稱為關系表達式。v 其中,表達式可以是算術表達式或其中,表達式可以是算術表達式或關系表達式,也可以是隨后將要學關系表達式,也可以是隨后將要學習到的邏輯表達式和字符表達式。習到的邏輯表達式和字符表達式。v 例如例如:a+1(b=5),由于,由于35不成立,故其值為不成立,故其值為0。3. 關系表達式關系表達式4.
55、 關系運算符的關系運算符的優先次序優先次序1. 關系運算符關系運算符2.4.4 關系術運算符關系術運算符2.4 運算符與表達式運算符與表達式例例2.9關系表達式應用舉例。關系表達式應用舉例。#includemain()char c=k;int i=4,j=2,k=5;float x=3e+5,y=7.56;printf(%d,%dn,a+3=k+1);printf(%d,%dn,j6,x-4.85a2、n1=n1、a2=n2、f1=n1、a1=n2的值依次是的值依次是1、0、0、1。f1a1、f2=A&char1=a&char1=z1. 邏輯運算符及邏輯運算符及其運算規則其運算
56、規則3. 邏輯表達式邏輯表達式2. 邏輯運算符的優先邏輯運算符的優先級和結合性級和結合性2.4.5 邏輯運算符邏輯運算符2.4 運算符與表達式運算符與表達式v 例例2.11 判斷某一年是否為閏年。判斷某一年是否為閏年。v 判斷閏年的條件是符合下面兩者之一判斷閏年的條件是符合下面兩者之一: 能被能被4整除,但不能被整除,但不能被100整除。整除。 能被能被4整除,又能被整除,又能被400整除。整除。v 上面的閏年判斷條件可以用下面的邏上面的閏年判斷條件可以用下面的邏輯表達式表示:輯表達式表示:v (year%4=0&year%100!=0)|year%400=0v 判斷非閏年的邏輯表達式
57、為:判斷非閏年的邏輯表達式為:v !(year%4=0&year%100!=0)|year%400=0)v 或者或者(year%4!=0 )|(year%100=0 & year%400!=0)1. 邏輯運算符及邏輯運算符及其運算規則其運算規則3. 邏輯表達式邏輯表達式2. 邏輯運算符的優先邏輯運算符的優先級和結合性級和結合性2.4.5 邏輯運算符邏輯運算符2.4 運算符與表達式運算符與表達式v 邏輯運算符、算術運算符和關系運算邏輯運算符、算術運算符和關系運算符之間的優先級比較如表所示。符之間的優先級比較如表所示。1. 邏輯運算符及邏輯運算符及其運算規則其運算規則3. 邏輯表達
58、式邏輯表達式運算符運算符優先級優先級邏輯非(!)邏輯非(?。?高高 低低算術運算符算術運算符關系運算符關系運算符邏輯與(邏輯與(&)和邏輯或)和邏輯或(|)(|)2. 邏輯運算符的優先邏輯運算符的優先級和結合性級和結合性2.4.5 邏輯運算符邏輯運算符2.4 運算符與表達式運算符與表達式v 在一個邏輯表達式中,如果有多個邏在一個邏輯表達式中,如果有多個邏輯運算符,如下面的表達式:輯運算符,如下面的表達式:!m&n |ab&cv 則則C語言將按以下原則進行處理:語言將按以下原則進行處理:(1)邏輯運算符!優先于邏輯運算符)邏輯運算符!優先于邏輯運算符&,邏輯運算符
59、,邏輯運算符&又優先于邏輯運又優先于邏輯運算符算符|,即,即“!”為三者中最高的。為三者中最高的。(2)邏輯運算符中的)邏輯運算符中的“&”和和“|”低于低于關系運算符,而關系運算符,而“!”高于算術運算符高于算術運算符。例如:。例如:(m=b)可以寫成可以寫成m=b。1. 邏輯運算符及邏輯運算符及其運算規則其運算規則3. 邏輯表達式邏輯表達式2.4.6 逗號運算符和條件表達式逗號運算符和條件表達式2.4 運算符與表達式運算符與表達式2.4.6 逗號運算符和條件表達式逗號運算符和條件表達式2.4 運算符與表達式運算符與表達式表達式表達式1條件表達式取表達式條件表達式取表達式2的
60、值的值條件表達式取表達式條件表達式取表達式3的值的值真(非真(非0)假(假(0)2.4.6 逗號運算符和條件表達式逗號運算符和條件表達式2.4 運算符與表達式運算符與表達式程序的運行情況為(用程序的運行情況為(用 代表回車符):代表回車符):Please input two numbers: 45,690 max=690 2.4.7 長度(求字節)運算符長度(求字節)運算符2.4 運算符與表達式運算符與表達式2.4.7 長度(求字節)運算符長度(求字節)運算符2.4 運算符與表達式運算符與表達式2.4.7 長度(求字節)運算符長度(求字節)運算符2.4 運算符與表達式運算符與表達式2.4.7 長度(求字節)運算符長度(求字節)運算符2.4 運算符與表達式運算符與表達式2.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版數學一年級上學期第6單元測試卷
- 中學生學習心理壓力緩解課件
- 浙江省2025年小升初數學專項復習9-圓(含答案)
- 廣告設計師作品評價試題及答案
- 產科基礎知識試題及答案
- 2024年助理廣告師考試突破技巧試題及答案
- 松下集團招聘試題及答案
- 叉車考試題庫分析及答案
- 本溪工勤考試題庫及答案
- 安安規考試題庫及答案
- 決策樹在飼料技術推廣中的應用研究
- 空管自動化系統的基本組成與功能課件
- 安寧療護之舒適護理
- 2023年杭州市規劃局拱墅規劃分局編外人員招考考前自測高頻難、易考點模擬試題(共500題)含答案詳解
- 品牌國際化對企業出口競爭力和品牌價值的影響研究
- 大模型的因果推理與可解釋性
- 《圓柱與圓錐》單元整體教學設計展示
- journal of affective disorders投稿格式要求
- 大白菜收獲機的設計
- 卒中后抑郁(PSD)在中國的發病情況及臨床管理分析-修改
- 260噸汽車吊地基承載力驗算
評論
0/150
提交評論