第2章數據類型運算符和表達式_第1頁
第2章數據類型運算符和表達式_第2頁
第2章數據類型運算符和表達式_第3頁
第2章數據類型運算符和表達式_第4頁
第2章數據類型運算符和表達式_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言其實很簡單教材配套課件 2第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 3整型常量 整型常量整型常量:直接寫在程序中的整數。例如:直接寫在程序中的整數。例如10,-247。 整型常量整型常量用用C語言怎樣說?語言怎樣說? 寫為十進制形式寫為十進制形式寫為八進制形式:寫為八進制形式: 在整數前加在整數前加0

2、 a=012; a=10; a=0175; a=125; 寫為十六進制形式:寫為十六進制形式: 在整數前加在整數前加0 x(或(或0X) a=0 xA; a=0X7d; 不允許寫為二進制形式不允許寫為二進制形式 整型常量表示法,整型常量表示法, 十進制數直接打,十進制數直接打, 數前添零進制八,數前添零進制八, 十六進制再加叉十六進制再加叉(x或或X)。 a=018; 八進制數由八進制數由0-7組成,組成, 不能含有不能含有8、9 口訣取自口訣取自C C語言其實很簡單語言其實很簡單4整型變量 變量在使用前要定義。變量在使用前要定義。對于要保存對于要保存整數整數的變量,應定義為的變量,應定義為整

3、型變量整型變量。如何定義。如何定義整型變整型變量量呢?呢? int int 是定義整型變量的是定義整型變量的關鍵字關鍵字。這種變量為這種變量為基本型整型變量基本型整型變量。 int 變量名變量名1, 變量名變量名2, ;a: int a; a=1; 1 a=10000; 100005整型變量占幾個字節 請問:你的包多大?請問:你的包多大? 瞧我的新包,漂亮吧?我的瞧我的新包,漂亮吧?我的包是小巧可愛型的!包是小巧可愛型的!我是旅行者,我的我是旅行者,我的包嘛?有這么大!包嘛?有這么大!整型變量占幾個字節?整型變量占幾個字節? 由由編譯系統編譯系統決定,在決定,在 Visual C+ 6.0 V

4、isual C+ 6.0 中占中占4 4個字節。個字節。 無論無論a a的值為幾,在的值為幾,在 Visual C+ 6.0 Visual C+ 6.0 中均占中均占4 4個字節。個字節。 a: int a; a=1; 1 a=10000; 10000漫畫取自漫畫取自C C語言其實很簡單語言其實很簡單6int的類型修飾詞 請問:女式的包多大?請問:女式的包多大? 請問:旅行包多大?請問:旅行包多大? 請問:請問:女式的女式的包多大?包多大? 請問:請問:旅行旅行包多大?包多大? short:表示變量為:表示變量為短整型短整型,即確定占,即確定占2個字節個字節的整型變量的整型變量 long:表示

5、變量為:表示變量為長整型長整型,即確定占,即確定占4個字節個字節的整型變量(在的整型變量(在VC6中,同基本型)中,同基本型)signed:表示變量為:表示變量為有符號型有符號型,即可以保存負數的整型變量,即可以保存負數的整型變量(signed 可省略)可省略) unsigned:表示變量為:表示變量為無符號型無符號型,即可保存正數和,即可保存正數和0,但,但不能保不能保存負數存負數的整型變量的整型變量 包包的的int的的7int的類型修飾詞(2) short short 和和 long long 不能同時選用;不能同時選用;signed signed 和和 unsignedunsigned不

6、能同時選用。不能同時選用。signedsigned 可以省略。若使用了修飾詞,可以省略。若使用了修飾詞,intint 可以省略。可以省略。 變量定義變量定義變量類型變量類型占字節數占字節數 取值范圍取值范圍定義的省略寫法定義的省略寫法signed short int a;有符號短整型有符號短整型2字節字節-32768 32767 short int a; short a; signed int b;有符號基本整型有符號基本整型 4字節字節*約約-21億億 +21億億 int b; signed b;signed long int c;有符號長整型有符號長整型4字節字節約約-21億億 +21億億

7、 long c; signed long c; unsigned short int d;無符號短整型無符號短整型2字節字節0 65535unsigned short d; unsigned int e;無符號基本整型無符號基本整型 4字節字節*0 約約 +42 億億unsigned e; unsigned long int f;無符號長整型無符號長整型4字節字節0 約約 +42 億億unsigned long f; * 在在VC+6.0中的占用字節數。中的占用字節數。 我們在編程時,應根據實際需要選用不同類型的變量。我們在編程時,應根據實際需要選用不同類型的變量。8整型數據在計算機中如何存儲

8、? 計算機內存由只能存儲計算機內存由只能存儲0和和1的存儲單元組成。的存儲單元組成。 整數整數 將整數轉換為將整數轉換為二進制二進制,然后存儲在計算機中。,然后存儲在計算機中。例如:例如:65存作存作 0000 0000 0100 0001 9第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 10可以省略整數部分的

9、可以省略整數部分的0 0,也可省略小數末尾的也可省略小數末尾的0 0,但必須有但必須有小數點小數點。 寫為小數形式寫為小數形式3.14159 0.158 0.0 -18.012. .36浮點型常量 浮點型浮點型也稱也稱實型實型 1 1.0 1. 寫為指數形式寫為指數形式 實型常量實型常量用用C語言怎樣說?語言怎樣說? 2.1E5 表示表示 2.1105 -0.8E-2表示表示 -0.810-2 23.026e-1表示表示 23.02610-1 .23026E1表示表示 0.23026 101 1e0表示表示 1 100 浮點小數莫忘點。浮點小數莫忘點。 浮點小數莫忘點。浮點小數莫忘點。 指數指

10、數E(e)挑兩邊全,挑兩邊全, E(e)后必須是整數,后必須是整數, 前后兩邊緊相連。前后兩邊緊相連。 口訣取自口訣取自C C語言其實很簡單語言其實很簡單11浮點型變量 float 是是關鍵字關鍵字 float 變量名變量名1, 變量名變量名2, ;double 變量名變量名1, 變量名變量名2, ;單精度型變量占單精度型變量占4個字節個字節, 表示范圍表示范圍1038左右左右 ,最大,最大7位有效數字位有效數字 double 是是關鍵字關鍵字 1)單精度型單精度型 2)雙精度型雙精度型 雙精度型變量占雙精度型變量占8個字節個字節, 表示范圍表示范圍10308左右左右 ,最大,最大15位有效數

11、字位有效數字 變量在使用前要定義。對于要保存變量在使用前要定義。對于要保存實數實數(即浮點數即浮點數)的變量,應定的變量,應定 義為義為實型變量實型變量。如何定義。如何定義實型變量實型變量呢?呢? 1.23E50 b: float b; b=1.5; 1.5 b=5.25e-8; 5.25e-8 double x=2.0, y; y: b=0.001234567; 0.001234567 b=0.00123456789; 0.001234568 y=1.23E50; x: 2.0 12浮點型變量(2) 單精度型單精度型(float)和和 雙精度型雙精度型(double)精度精度不同,可表示的數

12、據不同,可表示的數據范圍范圍不同。應根據實際需要選用:既滿足精度,又盡量避免大材小用。不同。應根據實際需要選用:既滿足精度,又盡量避免大材小用。 定義變量保存地球到太陽之間的距離:定義變量保存地球到太陽之間的距離: 1.495978707x101.495978707x101111 米米 double em=1.495978707e11; 定義變量保存全班同學平均成績定義變量保存全班同學平均成績 float score; 定義變量保存宇宙間共有粒子數的估定義變量保存宇宙間共有粒子數的估 計值:計值:10108080 double nnn=1E80; 定義變量保存某超市進貨數量定義變量保存某超市進

13、貨數量 int number; 定義變量保存人的年齡定義變量保存人的年齡 unsigned int age; 13浮點型數據在計算機中如何存儲? 4字節或字節或8字節字節 指數部分指數部分( (二進制二進制) ) 小數部分小數部分( (二進制二進制) ) 小數小數2 2指數指數實型數據被轉換成實型數據被轉換成 然后按然后按小數部分小數部分和和指數部分指數部分分別存儲,兩部分都是以分別存儲,兩部分都是以二進制二進制形式存形式存 儲的,其中小數部分固定為儲的,其中小數部分固定為“1.f1.f”的形式,與的形式,與整型數據整型數據的存儲方式的存儲方式截截 然不同然不同。符號位符號位 正數:正數:0

14、0 負數:負數:1 1 8 8 和和 8.8. 是截然不同的:是截然不同的:8 8是是整型常量整型常量占占4 4個字節存個字節存8 8的二進制即:的二進制即:0000 0000 . 0000 10000000 0000 . 0000 1000 8.8. 是是浮點型常量浮點型常量轉換為轉換為1.01.02 23 3,小數部分小數部分和和指數部分指數部分分別存分別存1.01.0和和0000 00110000 001114變量賦值的自動類型轉換 只能保存整數只能保存整數,不能保存實數。,不能保存實數。 int a; a=2.8; a: double y;y=3; float、doubleint(或有

15、或有int的修飾詞的修飾詞)只能保存實數只能保存實數,不能保存整數。,不能保存整數。 y: 變量定空間,塑身再搬遷。變量定空間,塑身再搬遷。若為空間窄,舍點也情愿。若為空間窄,舍點也情愿。2 3.0 口訣取自口訣取自C C語言其實很簡單語言其實很簡單15常量的后綴 L(或(或l)U(或(或u)F(或(或f)為了對應變量的類型,為了對應變量的類型,常量也有類型常量也有類型:-65u整型常量(整型常量(不帶小數點不帶小數點的常量)默認為基本型整型(的常量)默認為基本型整型(int 型);型);實型常量(實型常量(帶小數點帶小數點或或E(e)的常量)默認為雙精度實型(的常量)默認為雙精度實型(dou

16、ble 型)。型)。 若要改變常量的類型,可在常量后加后綴:若要改變常量的類型,可在常量后加后綴: 整數后加整數后加L(l)表示常量為表示常量為長整型(長整型(long),實數后加,實數后加L(l)表示常量為表示常量為長雙精長雙精度型(度型(long double),二者在,二者在VC6中與不加中與不加L(l)的效果都相同。的效果都相同。如:如:0L、125L、100000L、1.234567L只能加在整數后面,表示常量為只能加在整數后面,表示常量為無符號型無符號型,即,即非負非負: 如如0U、6U、65535u可既用可既用L又用又用U,表示常量為無符號長整型,如:,表示常量為無符號長整型,如

17、: 0LU、6LU、65535lu 表示常量為表示常量為單精度型(單精度型(float),加在整數后也表示為,加在整數后也表示為float型型(不再為整數不再為整數)。 例如:例如:1.23f、356f,。 16第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 17字符型量概述 / 類似類似QQ的程序的程序main

18、() .; 發送發送 你好!你好!; .; 現代計算機除能現代計算機除能計算數值計算數值之外,還能之外,還能處理文字處理文字。 用用QQQQ與好友聊天就是一個與好友聊天就是一個處理文字處理文字的例子。如何編寫一個的例子。如何編寫一個類似類似QQQQ的的程序程序呢?呢? 文字型數據文字型數據 用用 QQ QQ 收發消息時,消息是收發消息時,消息是文字文字的,而不是的,而不是數值數值的的 如何用如何用C C語言表示語言表示文字型數據文字型數據呢呢( (用用C C語言怎樣說語言怎樣說) )? 先學習先學習1 1個個字符的文字字符的文字字符型字符型數據;數據; 再學習再學習多個多個字符組成的文字字符組

19、成的文字字符串字符串。 18單引號必須為單引號必須為英文英文,不分左右;,不分左右; 單引號內只能有單引號內只能有 字符,如字符,如ab錯誤!錯誤! 也錯誤!也錯誤! 每個字符常量占每個字符常量占1個字節個字節(8個個bit位);位); 單引號是定界符,它不屬于字符內容;單引號是定界符,它不屬于字符內容;字符型常量 先考慮先考慮 字符如何用字符如何用C C語言表示?語言表示? 例如要向好友發送一個字符例如要向好友發送一個字符a a,該,該如何做呢?如何做呢? main() .; 發送發送 a; .; main() .; 發送發送 a; .; a為變量,發送為變量,發送 的是的是a的值不是的值不

20、是 字符字符a本身本身 用單引號括用單引號括 起,起,發送的才發送的才 是字是字符符a本身本身 用用單引號單引號括起的括起的 字符,是要處理的字字符,是要處理的字 符數據,不是變量名,這稱符數據,不是變量名,這稱字符型常量字符型常量。 a、b、c a、b、c 、1、5、0、,、!、=、+、#、$ 、 ( (一個空格字符一個空格字符) ) 好友只能收到好友只能收到a a,收,收不到單引號的哦!不到單引號的哦! 19字符型數據在計算機中如何存儲? 計算機內存由只能存儲計算機內存由只能存儲0 0和和1 1的存儲單元組成的存儲單元組成 字符編號字符編號 (整數)(整數) a b - 5 0 = * #

21、 c 字符型數據字符型數據 (American Standard Code for Information Interchange) 例如:例如: a 編號為編號為 97,存作,存作 97 的二進制;的二進制; 編號為編號為 93,存作,存作 93 的二進制。的二進制。 20ASCII碼 標準標準ASCIIASCII碼碼0127 0127 031,127:控制字符:控制字符(不可顯示不可顯示) 32:空格字符:空格字符 4857:數字字符:數字字符09 按按0-9的順序的順序依次遞增排列;依次遞增排列; 6590:大寫字母字符:大寫字母字符AZ按按字母表的順序字母表的順序依次遞增排列依次遞增排

22、列 97122:小寫字母字符:小寫字母字符az按按字母表的順序字母表的順序依次遞增排列依次遞增排列附錄一附錄一 * 128255 為擴展字符。為擴展字符。 對應的對應的大小寫字母大小寫字母ASCIIASCII碼差碼差3232。 已知字符已知字符A的的ASCII碼為碼為65,則字符,則字符B的的ASCII碼碼是是 ,字符,字符d的的ASCII碼是碼是 。66 100 數字字符數字字符0的的ASCII碼是碼是 0 嗎?嗎? 數字字符數字字符1的的ASCII碼是碼是 1 嗎?嗎? 21字符型數據與整數的混用 整數整數 字符字符 97的二進制的二進制 字符與整數是字符與整數是混用混用的的 字符變作對應

23、的字符變作對應的ASCII碼碼 C + 1 D - C 7 + 1 aA a 1A a65 = D = 68 = 68-67 = 1 = 55+49 = 104 = h;8 9765 3297 4965 22數字字符常量與整型常量的區別 5 5 5的的ASCII碼不是碼不是5!字符型常量,字符型常量,ASCII碼為碼為53,存作,存作 53 的二的二進制進制; 整型常量整型常量,直接存作,直接存作 5 的二進制的二進制; 5 - 0 = 5- 48 =+ 0 = 5 + 48 = 5 5 5 9 - 0 = 9- 48 =+ 0 = 9 + 48 = 9 9 9 23魔術棒轉義字符 是唯一特殊

24、的字符,并不表示是唯一特殊的字符,并不表示 本身,而是改變其后本身,而是改變其后字符的原有含義字符的原有含義 換行符:換行符: 跳格符:跳格符: 響鈴符:響鈴符: 錯誤錯誤表示表示 字符字符錯誤錯誤表示表示 字符字符表示表示 字符字符 24轉義字符(3) 轉義字符用途轉義字符用途 可表示可表示特殊字符(特殊字符( )。 可表示不能顯示的可表示不能顯示的控制字符控制字符。 可通過可通過ASCII碼碼表示任意一個字表示任意一個字符。符。25轉義字符(4) 61 1 101 A x41 A 19 這使得一種字符可以有多種表示這使得一種字符可以有多種表示 方法,如字符方法,如字符A A可表示為:可表示

25、為:AA、101101、x41 x41 012、xA、12、x0A換行符除可寫為換行符除可寫為nn外,還有哪些外,還有哪些表示法呢?表示法呢?( (已知換行符的已知換行符的ASCIIASCII碼碼為為10)10)八進制數不能有數符八進制數不能有數符8、9 dddddd為為13位位八進制八進制數。數。表示表示ASCII碼的八進制為碼的八進制為ddd的字符。的字符。 xhhhh為為12位位十六進制十六進制數(數(x必須小寫)。必須小寫)。表示表示ASCII碼的十六進制為碼的十六進制為hh的字符。的字符。 26字符型變量 字符型變量占字符型變量占1 1個字節,保存個字節,保存一個一個字符字符( (保

26、存字符的保存字符的ASCIIASCII碼碼) ) c: char c; c=a; c=98; a b 或省略或省略 signed signed char 變量名變量名1, 變量名變量名2, ; 可保存負數可保存負數,范圍:,范圍: -128 127unsigned char 變量名變量名1, 變量名變量名2, ; 不能保存負數不能保存負數,范圍:,范圍: 0 255 27第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串

27、型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 28字符串型數據 羊肉串羊肉串 iPhone 雙引號雙引號括起(英文雙引號,不分左右),括起(英文雙引號,不分左右), 0多個字符多個字符 字符串字符串:由一個個的單個字符組成:由一個個的單個字符組成一串字符。一串字符。 BMW Z4 $12.5 a 29在內存中的存儲方式 每字符占每字符占1個字節連續存儲,多占個字節連續存儲,多占1個字節存個字節存0。 iPhone BMW Z4 $12.5 a B M W Z 4 0$ 1 2 . 5 0a 00i P h o n e 030字符串的

28、長度 6 6 5 1 0 mn 2 mn m n0 3 mn mn0 3 iPhone BMW Z4 $12.5 a BMW Z 4 0$ 1 2 . 5 0a00i P h o n e 0所包含的字符個數(不含所包含的字符個數(不含0,但計空格),但計空格) mn0mn mn mn 31字符常量和字符串常量的區別 字符常量字符常量字符串常量字符串常量引號引號單引號單引號雙引號雙引號字符個數字符個數只能含只能含1個字符(轉義字符個字符(轉義字符形式上多個實際仍為形式上多個實際仍為1個)個)可含可含0多個字符多個字符能否能將值賦給能否能將值賦給char型變量)型變量)可以可以不可以不可以有無對應

29、變量有無對應變量有字符型變量有字符型變量無字符串型變量無字符串型變量占用內存字節數占用內存字節數一律一律1個字節個字節字符串字符數字符串字符數(長度長度)+1沒有字符串變量沒有字符串變量不能企圖將字符串常量賦值給字符型的變量不能企圖將字符串常量賦值給字符型的變量 char c;c=abcde; 32第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位

30、運算位運算3. 賦值運算賦值運算 33算術運算符 17 % 5值為值為2 3 % 10值為值為30 % 10值為值為0 -5 % 3值為值為-25 % -3值為值為2%:運算量必須為:運算量必須為整型整型或或字符型字符型 50.823 % 9+(加,或正號)(加,或正號)- (減,或負號)(減,或負號)*(乘)(乘) /(除)(除)%(取余數,求模)(取余數,求模) 先先乘除乘除,后,后加減加減 * / % 優先級相同,高于優先級相同,高于 + - double d=1.0;printf(%d, d % 10); 求余求余%嚴,整符才能算。嚴,整符才能算。口訣取自口訣取自C C語言其實很簡單語

31、言其實很簡單34算術表達式 表達式的表達式的大、中、小括號大、中、小括號一律使用一律使用小括號小括號( ),如:,如:c * (a / (b+c) )(1 + (2 + 3) * 4 - 8) /2 + 5) * 2其中其中最內層最內層( )表示表示小括號小括號,向外逐層分別表示,向外逐層分別表示中括號中括號、大括大括號號;還可繼續在外層嵌套;還可繼續在外層嵌套( ),( )的層數理論上沒有限制。的層數理論上沒有限制。10 + 20 (a * 2) / b (x + r) * 8 - (a + b) / 10 sin(x) + sin(y) 5 abab abab 2ab2(a+b) a2 c

32、 * a / (b+c) 運算符與數據組成運算符與數據組成表達式表達式。 a2ba 如用如用單引號單引號或或雙引號雙引號括起來的就不是運算符,也不是表達式了:括起來的就不是運算符,也不是表達式了:+、- 不是運算符,是字符型常量不是運算符,是字符型常量5+2 不是表達式,是字符串常量不是表達式,是字符串常量 35第類自動類型轉換 所有表達式都有一個所有表達式都有一個值值及及類型類型。低類型低類型轉換為轉換為高類型高類型:char int float double特殊:所有浮點數必然都轉換為特殊:所有浮點數必然都轉換為double再運算(即使兩個再運算(即使兩個float型型量的運算也都先轉換為

33、量的運算也都先轉換為double)表達式的值:表達式的值:就是表達式的運算結果;就是表達式的運算結果;表達式的類型:表達式的類型: 兩個運算量類型一致時,與兩兩個運算量類型一致時,與兩個運算量的類型一致。個運算量的類型一致。 兩個運算量類型不一致時,表兩個運算量類型不一致時,表達式的類型達式的類型與其中較高類型運與其中較高類型運算量的類型算量的類型一致(較低類型運一致(較低類型運算量先被自動轉換為高類型再算量先被自動轉換為高類型再運算)。運算)。類型不怕亂,結果向高看。類型不怕亂,結果向高看。2.4 + 1.6 結果為結果為double型型4.0,結果,結果不能為不能為int型的型的42.4

34、+ 3 結果為結果為double型為型為5.4,結果,結果不能為整數不能為整數5口訣取自口訣取自C C語言其實很簡單語言其實很簡單36area: 12兩類自動類型轉換綜合練習 類型不怕亂,結果向高看。類型不怕亂,結果向高看。變量定空間,塑身再搬遷。變量定空間,塑身再搬遷。若為空間窄,舍點也情愿。若為空間窄,舍點也情愿。兩類兩類自動類型轉換自動類型轉換: int v=2; double t=2.8; int s; s = v * t; double: 2.0double: 5.6 s: 5main() double pai=3.14; int area, r=2; area = r * r *

35、pai; printf(%d, area);int: 4 double: 4.0double: 12.56 12 37整數除法 5/2結果為結果為2不是不是2.55.0/2 結果為結果為2.55/2.0 結果為結果為2.55.0/2.0 結果為結果為2.51/2結果為結果為0不是不是0.51./2結果為結果為 0.5-20/7的結果為的結果為-2若有變量若有變量int x=3510; 則表達式則表達式 x/1000*1000 的值是?的值是?如已定義如已定義float型的變量型的變量a,b,c,則表達,則表達式式(a+b+c)/2 與與1/2*(a+b+c)等效嗎?等效嗎?整數除法:整數除法:

36、 兩個整數相除,結果兩個整數相除,結果只取商的整數部分只取商的整數部分;只有兩個運算數;只有兩個運算數至少至少 有一個為實數有一個為實數,結果才為實數。,結果才為實數。 (答案:(答案:3000)5 / 2 int: int: 2 5.0 / 2 double: 2.0 double: 2.5 答案:不等效!后者必為答案:不等效!后者必為0。但等效形。但等效形 式可寫為:式可寫為:1.0/2 * (a+b+c) 或或 1/2.0 * (a+b+c) 或或 1.0/2.0 * (a+b+c) 整數整除商,小數門外攔。整數整除商,小數門外攔。口訣取自口訣取自C C語言其實很簡單語言其實很簡單38強

37、制類型轉換 強制類型轉換:強制類型轉換: float x=4.5, y=2.1;(int)(x+y) 的值為:的值為: 6 先求和,再將先求和,再將“和和”轉換轉換(int)x + y 的值為:的值為: 6.1 先把先把x轉換后再求和轉換后再求和(類型說明符類型說明符)量量 類型說明符類型說明符(量量) 或或 類型說明符類型說明符為為int、long、unsigned、float、double 、char等。等。功能是強制把功能是強制把“量量”臨時臨時轉換為轉換為類型說明符類型說明符的類型(轉換后精度可能會的類型(轉換后精度可能會受受 損,如將實數強制轉換為損,如將實數強制轉換為int、將、將

38、double強制轉換為強制轉換為float都受損)都受損) 。 (int)3.8 值為值為3float f=5.75; 則則 (int)f 的值為的值為 5 ,而,而f的值仍為的值仍為5.75。 括起類型字,臨時強轉換。括起類型字,臨時強轉換。口訣取自口訣取自C C語言其實很簡單語言其實很簡單39算術運算小結和練習 類型不怕亂,結果向高看。類型不怕亂,結果向高看。整數整除商,小數門外攔。整數整除商,小數門外攔。求余求余 % 嚴,整符才能算。嚴,整符才能算。括起類型字,臨時強轉換。括起類型字,臨時強轉換。表達式表達式 (int)( (double)(3 / 2) + 0.5 + (int)1.9

39、9 * 2 ) 的值是的值是_表達式表達式 (int)( (double)(3 / 2) + 0.5 + (int)1.99 * 2 ) 的值是的值是_3 1 1.0 1 2 3.5 40四舍五入公式 若若x是實數(單精度或雙精度),把是實數(單精度或雙精度),把x四舍五入四舍五入保留保留小數點后小數點后d位位的計算公式是:的計算公式是:(int)(x*10d +0.5)/ 10d 除數的除數的 10d 必須加必須加“.0”若有若有float x=123.4567, y; 要將要將 x 四舍五入保留小數點后四舍五入保留小數點后2位,將結果位,將結果存入變量存入變量y 中的表達式語句是:中的表達

40、式語句是:y= (int)(x * 100 + 0.5) / 100.0 ;y= (int)(x*100.0 + 0.5) / 100.0; y= (int)(12345.67 + 0.5) / 100.0; y= (int)12346.17 / 100.0;y= 12346 / 100.0;y= 12346.0 / 100.0; y= 123.46; 如將最后的除法寫作如將最后的除法寫作“ / 100”,則,則 y中的值為中的值為123.0 是錯誤的。是錯誤的。y=12346 / 100;y=123; y=123.0; 41取整數的個、十、百、千位#include main()int n=1

41、234;int ge, shi, bai, qian;ge = n % 10;shi = n/10 % 10;bai = n/100 % 10;qian = n/1000;printf(%dn,ge);printf(%dn,shi);printf(%dn,bai);printf(%dn,qian);4321取一個整數取一個整數x的的個位個位:x%10如如1234%10得到得到4取取十位、百位、千位十位、百位、千位都轉換為都轉換為“取個位取個位”的問題。的問題。 取十位:取十位:先先縮小縮小10倍倍生成新數,原數的生成新數,原數的十位十位成為新數的成為新數的個位個位然后然后取新數的個位取新數的個

42、位(x/10) %10如如1234/10%10得到得到3取百位:取百位:先先縮小縮小100倍倍生成新數,原數的生成新數,原數的百位百位成為新數的成為新數的個位個位然后然后取新數的個位取新數的個位(x/100) %10如如1234/100%10得到得到2取最高位時,生成的新數只有一位,不再取最高位時,生成的新數只有一位,不再 %10 也是可以的。也是可以的。取整數取整數x的的個位個位:x % 10 取整數取整數x的的十位十位:x / 10 % 10 取整數取整數x的的百位百位:x / 100 %10 取整數取整數x的的千位千位:x / 1000 %10 取最高位時,取最高位時,/n 后后可不再可

43、不再 %10。 42第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 43賦值運算符 a=10; a: 10 走,進去!走,進去! 不同于數學上的等號,它不同于數學上的等號,它沒有相等的含義沒有相等的含義。=不是相等,不是相等,而是賦值而是賦值。 是把是把右邊右邊的內容賦予的內容賦予左邊左邊,而不是相反。,而不是相

44、反。 賦值后賦值后右邊內容不變右邊內容不變。例:例:int x=10, y=20; x=y; 賦值后賦值后x、y均為均為20。 “=”左邊必須是變量左邊必須是變量,不能是常量也不能,不能是常量也不能是表達式。是表達式。 a=a+1; a+1 求值求值 走,進去!走,進去! a: x+1 = 3; 3 x+1 求值求值 嘿,搞什么嘛,這嘿,搞什么嘛,這里不能裝東西!里不能裝東西! 11 10 11 走,進去!走,進去! 44賦值表達式 + - * / % 運算符運算符 a+10 a=10 int: 12 a: 2 int: 10 10 = 表達式表達式5*(b=10+20)的值是的值是 。 =運

45、算符的優先級相當低,排在運算符的優先級相當低,排在C語言所有運算符的語言所有運算符的倒數第二位倒數第二位。 150 同時同時:b被賦值變為被賦值變為30 表達式表達式 x=(a=5)+(b=8) 的值是的值是 。 13 賦值表達式也有賦值表達式也有表達式的值表達式的值和和類型類型,均與,均與賦值后賦值后左邊變量左邊變量 的值和類型的值和類型相同。相同。 表達式求值;表達式求值; 改變改變 = = 左邊變量的值。左邊變量的值。 表達式求值;表達式求值; 同時同時:a被賦值為被賦值為5,b被賦值為被賦值為8,x被賦值為被賦值為13 30 30 5 5 8 8 45賦值表達式(2) 同優先級運算符,

46、同優先級運算符,從左到右從左到右運算運算“從左到右從左到右”的結合性的結合性 + - * / % 都是都是“從左到右從左到右”的的 1 + 2 - 3 + 4 + 5 同優先級運算符,同優先級運算符,從右到左從右到左運算運算“從右到左從右到左”的結合性的結合性 = 是是“從右到左從右到左”的的 x=y=25; x=25; x、y均被賦值為均被賦值為 25定義變量時賦初值定義變量時賦初值 不能寫為連等的形式不能寫為連等的形式 int x=y=25; 25 同時同時:y被賦值為被賦值為25 25 同時同時:x被賦值為被賦值為25 25是剛是剛才表達才表達式計算式計算的結果的結果值值 46已知整型變

47、量已知整型變量n的值為的值為8, 求表達式求表達式n+=n*=n-2的的 值值: ,表達式求值表達式求值 后后n的值為的值為 。 復合的賦值運算符 a += 5 a = a+5 r %= p r = r % p x *= y + 7 x = x * (y + 7)右邊要加右邊要加 ( )復合的賦值運算符復合的賦值運算符與與賦值運算賦值運算 符符(=)相同:優先級相同:優先級倒數第二倒數第二, “從右到左從右到左”的結合性。的結合性。 n += n *= n - 2 n += n *= 6 n: 848 n *= 6 n = n*6 n = 48 48 n += 48 n = n+48 n =

48、96 96 96 96 96 左邊也必須是左邊也必須是變量變量。 + - * / % =運算符運算符 += -= *= /= %= 48 48 同時同時:n被賦值為被賦值為96 同時同時:n被被賦值為賦值為48 n += n *= n - 2 47復合的賦值運算符(2) a += b+c += 12; b+c = b+c + 12a += b+c += 12; b+c + 12 b+c 求值求值 嘿,搞什么嘛,這嘿,搞什么嘛,這里不能裝東西!里不能裝東西! 走,進去!走,進去! a = 7+1 = b; a = 7+1 = b; b8 嘿,搞什么嘛,這嘿,搞什么嘛,這里不能裝東西!里不能裝東西

49、! 走,進去!走,進去! 8 = b 48第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 49計數器計數器 按一次,計數按一次,計數+1+1 自增和自減運算 + - * / % = += -= *= /= %= 運算符運算符 +- i=i+1; i: 5 6 7 i=i+1; j=j-1; j: 10 9 8 j

50、=j-1; 自增運算符自增運算符 +:使變量的值:使變量的值自增自增1(結果仍存回該變量)(結果仍存回該變量) 自減運算符自減運算符-:使變量的值:使變量的值自減自減1 1(結果仍存回該變量)(結果仍存回該變量) i+; 或或 +i; i+; 或或 +i; j-; 或或 -j; j-; 或或 -j;50都使都使i i自增自增1 1,這一點沒有區別,這一點沒有區別 自增和自減運算 設設i=5; j=10; i=5; j=10; i: 5 j: 10 表達式表達式i+j表達式的值表達式的值計算表達式后變量計算表達式后變量的值的值15i仍為仍為5j仍為仍為10i+i56i變為變為6i變為變為6j-j

51、109j變為變為9j變變為為9i+ +i j- -j 表達式表達式 表達式表達式 表達式表達式 表達式表達式 i+j 表達式表達式 +1+1后后i i的值的值-1-1后后j j的值的值都使都使j j自減自減1 1,這一點沒有區別,這一點沒有區別 -1-1前前j j的值的值+1+1前前i i的值的值+在在先先,先先加后用;加后用;+在在后后,后后加先用;加先用;-在在先先,先先減后用;減后用;-在在后后,后后減先用。減先用。 51自增和自減運算(2) 表達式求值;表達式求值; 改變改變 = = 左邊變量的值。左邊變量的值。 表達式求值;表達式求值; 表達式求值;表達式求值; 改變變量的值。改變變

52、量的值。 表達式表達式i+j表達式的值表達式的值計算表達式后變量計算表達式后變量的值的值15i仍為仍為5j仍為仍為10i+i56i變為變為6i變為變為6j-j109j變為變為9j變變為為9+1+1后后i i的值的值-1-1后后j j的值的值-1-1前前j j的值的值+1+1前前i i的值的值+ - 會改變運算量的值,會改變運算量的值, 也不能也不能用于常量、表達式,只能用于用于常量、表達式,只能用于變量變量! 如如 5+ 錯誤錯誤 -(a*b) 錯誤錯誤 52自增和自減運算(3) int a=1, b; b = 5 - a+;執行后,執行后,b值為值為 ,a值為值為 。 等價于等價于 b =

53、5 - a; a=a+1; int a=1,b; b = 5 - +a ;執行后,執行后,b值為值為 ,a值為值為 。 a: 1 b: ? a: 1 b: ? 1 1 2 4 4 4 2 2 2 2 2 3 3 3 2 2 int a=3, b=4; int x, y;x=a+b+; y=a+(+b);a: 3 b: 4 3 3 4 4 4 5 x: ? y: ? 7 4 4 5 6 6 6 10 執行后,執行后,x x值為值為7 7,y y值為值為10 10 等價于等價于 a=a+1; b = 5 - a; 53第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據

54、類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4) 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 545 5 逗號運算符和逗號表達式 逗號運算符逗號運算符優先級最低(倒數第一)優先級最低(倒數第一),結合順序為,結合順序為自左至右。自左至右。 表達式表達式1 , 1 , 表達式表達式2 , 2 , 表達式表達式3 3 依次依次從左到右分別計算從左到右分別計算各個表達式的值各個表達式的值 整個整個“逗號表達式逗號表達式”的值為其中的值為其中最

55、后一個表達式最后一個表達式(上例為表達式(上例為表達式3 3)的值。)的值。表達式表達式1;1;表達式表達式2;2;表達式表達式3;3;取剛才表達式取剛才表達式3 3的值的值; ;相當于相當于一小段程序一小段程序 1+1, 2+3 1+1, 2+3 表達式的值為表達式的值為5 5 x=5, 5+2, x-3 x=5, 5+2, x-3 表達式的值為表達式的值為2 2(x x被賦值為被賦值為5 5,必須依次計算),必須依次計算) x= (a=1, b=3, +b, a+b); x= (a=1, b=3, +b, a+b); 此為賦值語句,此為賦值語句,x x被賦值為被賦值為 5 5 a: 1 b

56、: 3 4 1 1 3 3 4 4 5 5 x: 5 553 3 如有如有int int a=2, b=4, c=6, x, y;a=2, b=4, c=6, x, y;1) 1) 若執行若執行 y=( (x=a+b), (b+c) );y=( (x=a+b), (b+c) ); 后,后,x x值為值為 6 6 ,y y值為值為 1010 ;2) 2) 若執行若執行 y=(x=a+b), (b+c);y=(x=a+b), (b+c); 后,后,x x值為值為 6 6 ,y y值為值為 6 6 。y=(6, 10); y=(6, 10); y=10; y=10; y=( (x=6), 10);

57、y=( (x=6), 10); 逗號表達式(2) y=6 , 10; y=6 , 10; 6, 10; 6, 10; 10(10(被丟棄被丟棄) ) y=(x=6) , 10; y=(x=6) , 10; 設變量已正確定義為整型,則表達式設變量已正確定義為整型,則表達式n=i=2, +i, i+n=i=2, +i, i+的值為的值為_。n: 2 i: 2 3 4 2 2 3 3 3 3 56第2章 數據類型、運算符和表達式 2. 算術運算算術運算 1. 基本基本數據數據類型類型 1 1) 整型數據整型數據 2 2) 浮點型(實型)數據浮點型(實型)數據 3 3) 字符型數據字符型數據 4 4)

58、 字符串型數據字符串型數據 4. 自增與自減運算自增與自減運算 5. 逗號運算逗號運算6. 位運算位運算3. 賦值運算賦值運算 57位在我心中位運算 1001011010100110101001位(位(bitbit) 位運算位運算就是在就是在二進制位二進制位的基礎上的運算的基礎上的運算 數據必須轉換為數據必須轉換為二進制二進制才能進行;才能進行; 只能對只能對整型整型數據和數據和字符字符型數據進行。型數據進行。 + - * / % = += -= *= /= %= + -運算符運算符 & | 58 按位與& 參與運算的兩個數取參與運算的兩個數取二進制二進制,然后將對應的,然后將對應的各二進制位相各二進制位相“與與”:只有對應的兩個二進制位只有對應的兩個二進制位都為都為1 1時,結果位時,結果位才為才為1 1,有一個為有一個為0 0結結果位果位為為0 0。0000 1001(9(9的二進制的二進制) ) &)0000 0101(5(5的二進制的二進制) ) “按位與按位與 & &” 與與 “邏輯與邏輯與 &” 不同不同 9 & 5 表達式的值為:表達式的值為:1 1 0000 0001(1(1的二進制的二進制) ) 按位與按位與常用來將一個數的二進制的某些位常用來將一個數的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論