王智祥  著 第三章 運算子、運算元     與運算式 3-1  運算式簡介 3-2  運算子簡介 3-1-1  運算式的分類 3-2-1  運算子優先順序 3-2-2  算術運算子 3-2-3  關係運算子 3-2-4  邏輯運算子 3-2-...
3-1-1  運算式的分類 <ul><li>下面簡單介紹這些運算式的特性與範例: </li></ul>3-1  運算式簡介 P 3-2 一元運算式: 由一元運算子所組成的運算式,在運算子左側或右側僅有一個運算元。 例如  -100 (負數)、 ...
1.  當遇到一個運算式時,先區分運算子與運算元。 3-2-1   運算子優先順序 3-2  運算子簡介 P 3-4 <ul><li>在處理一個多運算子的運算式時,有一些規則與步驟是必須要遵守,如下所示: </li></ul>2.  依照運算子...
3-2-1   運算子優先順序 3-2  運算子簡介 P 3-4 <ul><li>以下是 C 中各種運算子計算的優先順序:  </li></ul>說   明 運算子 指定運算 = 條件運算子 ?: 邏輯運算 AND 邏輯運算 OR && || ...
    3-2-2   算術運算子  (1) 3-2  運算子簡介 P 3-5 <ul><li>算術運算子的符號與名稱如下表所示:  </li></ul>a-- --a 遞減 -- a++ ++a 遞增 ++ +a 正號 +x -a 負號 -x...
10 – 2 * 3  3-2-2   算術運算子  (2) 3-2  運算子簡介 P 3-5 <ul><li>四則運算子  + - * /   </li></ul>+ - * /  運算子與我們常用的數學運算方法相同, 先讓我們來看下面的例子...
3-2-2   算術運算子  (3) 3-2  運算子簡介 P 3-6 <ul><li>程式範例:四則運算子的說明與示範: CH03_01.c </li></ul>
在第 14 行中變數  a  與  c  相除後,因為兩個整數相除, 其結果不論是為整數或具有小數,都會將小數的部分捨去, 僅取整數的部分來儲存,雖然結果應該為  2.5 , 不過系統將小數部分捨去,所以最後輸出結果為整數  2 。  3-2-...
3-2-2   算術運算子  (4) 3-2  運算子簡介 P 3-7 <ul><li>餘數運算子  %   </li></ul>餘數運算子是計算兩數相除後的餘數,而且這兩個運算元必須為 整數、短整數或長整數型態。 例如: int a=15,b...
3-2-2   算術運算子  (5) 3-2  運算子簡介 P 3-7 <ul><li>程式範例: </li></ul>餘數運算子 % 的說明與示範: CH03_02.c
在第 8 行中,如果各位想在螢幕顯示出  %  餘數運算子, 必須要重覆兩次  %  字元。  <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>3-2-2   算術運算子  (5) 3-2  運算子簡...
3-2-2   算術運算子  (6) 3-2  運算子簡介 P 3-7 <ul><li>正負號  + - </li></ul>正負號運算子主要表示運算元的正 / 負值,通常設定常數為正數時可以省略 + 號,例如「 a=5 」與「 a=+5 」意...
  3-2-2   算術運算子  (7) 3-2  運算子簡介 P 3-8 <ul><li>遞增運算子  ++ </li></ul>遞增運算子為一元運算子,可用來將運算元內容值加  1 。  下表說明了遞增運算子這兩種運作方式:  ++ 變數名...
  3-2-2   算術運算子  (8) 3-2  運算子簡介 P 3-9 <ul><li>遞減運算子  -- </li></ul>遞減運算子與遞增運算子的格式與功能相仿,可將運算元內容值減 1 。  遞減運算子同樣具有兩種運作方式,如下表所示...
3-2-2   算術運算子  (9) 3-2  運算子簡介 P 3-9 <ul><li>程式範例: </li></ul>遞增運算子與遞減運算子 的說明與示範: CH03_03.c
3-2-2   算術運算子  (9) 3-2  運算子簡介 在第 10 、 15 、 20 、 25 行,是說明前置與後置型遞增運算子與遞減運算子的各種運算結果。  <ul><li>執行結果 </li></ul><ul><li>程式解說 </l...
3-2-2   算術運算子  (10) 3-2  運算子簡介 <ul><li>指定運算子 </li></ul>指定運算子 (=) 會將右側的值指定給左邊的變數。 例如: 指定運算子也可以搭配某個運算子,而形成「複合指定運算子」 ( Compou...
3-2-2   算術運算子  (10) 3-2  運算子簡介 此運算式的含意是將 a 的值與 b 的值以 op 運算子進行計算, 然後再將結果指定給 a 。 其中「 op= 」運算子,可以是以下 10 個運算子中的任何一個。 P 3-11 |=...
3-2-2   算術運算子  (11) 3-2  運算子簡介 P 3-11 <ul><li>程式範例: </li></ul>指定運算子的 說明與示範: CH03_04.c
3-2-2   算術運算子  (11) 3-2  運算子簡介 在第 15 行的運算式「 a+=5 」相當於「 a=a+5 」,所以  a  的數值變成  10 ( a=5+5 )。 在第 16 及 17 行中,因為複合指定運算子的右側還有運算式...
  3-2-3   關係運算子  (1) 3-2  運算子簡介 P 3-13 <ul><li>比較運算子共有六種,如下表所示: </li></ul>例如: a!=b 不等於 != a==b 等於 == a<=b 小於等於 <= a>=b 大於等...
3-2-3   關係運算子  (2) 3-2  運算子簡介 P 3-13 <ul><li>程式範例: </li></ul>關係運算子的說明與示範: CH03_05.c
3-2-3   關係運算子  (2) 3-2  運算子簡介 P 3-14 第 08 、 10 與 12 行中分別利用關係運算子來比較兩個運算元的關係,並且分別輸出結果數值 1 與 0 。 此外在第 12 行中,請注意比較運算子「 == 」和指定...
    3-2-4   邏輯運算子  (1) 3-2  運算子簡介 P 3-14 <ul><li>邏輯運算子是運用在以判斷式來做為程式執行流程控制的時刻。 </li></ul><ul><li>邏輯運算子判斷結果的輸出與比較運算子相同,僅有「真 ...
  3-2-4   邏輯運算子  (2) 3-2  運算子簡介 P 3-15 <ul><li>&&  運算子 </li></ul>當 && 運算子 (AND) 兩邊的運算式皆為真 (true) 時,其執行結果才為真,任何一邊為假( flase ...
3-2-4   邏輯運算子  (3) 3-2  運算子簡介 P 3-15 <ul><li>||  運算子 </li></ul>當 || 運算子 (OR) 兩邊的運算式,其中一邊為真 (true) 時,執行結果就為真,否則為假。 如下表所示:  ...
  3-2-4   邏輯運算子  (4) 3-2  運算子簡介 P 3-15 <ul><li>!  運算子 </li></ul>這是一元運算子的一種,可以將運算式的結果變成相反值。 如下表所示:  例如運算式「 !(a>b) 」,則執行結果有兩...
3-2-4   邏輯運算子  (5) 3-2  運算子簡介 P 3-16 <ul><li>程式範例: </li></ul>邏輯運算子的說明與示範: CH03_06.c
3-2-4   邏輯運算子  (5) 3-2  運算子簡介 P 3-17 在第 12 行中  a<b  且  b<c ,所以使用  && ( AND )運算子來計算這兩個運算式時,得到的結果為「真」( true ),因此傳回值為  1 。 在第...
3-2-5   位元運算子  (1) 3-2  運算子簡介 P 3-17 <ul><li>運算元在記憶體中的值,實際上是採取二進位的形式。  </li></ul><ul><li>C  語言中提供有六種二進位的位元運算子。 </li></ul>如...
3-2-5   位元運算子  (2) 3-2  運算子簡介 P 3-18 <ul><li>& (AND)  </li></ul>執行 AND 運算時,對應的兩位元都為 true 時,運算結果才為 true 。  例如  a=12 ,則「 a&7...
3-2-5   位元運算子  (3) 3-2  運算子簡介 P 3-18 <ul><li>| (OR)  </li></ul>執行 OR 運算時,對應的兩位元只要任一位元為  true ,運算結果即為  true 。 例如  a=12 ,則  ...
3-2-5   位元運算子  (4) 3-2  運算子簡介 P 3-18 <ul><li><< ( 左移 )  </li></ul>左移運算子 (<<) 可將運算元內容向左移動 n 個位元,其格式如下: << 也可以和 = 號結合成 <<= 指...
3-2-5   位元運算子  (5) 3-2  運算子簡介 P 3-19 <ul><li>右移  (>>)  </li></ul>右移運算子 (>>) 與左移相反,可將運算元內容右移 n 個位元,其格式如下: <ul><li>~ (NOT)  ...
3-2-5   位元運算子  (6) 3-2  運算子簡介 P 3-19 <ul><li>程式範例: </li></ul>位元運算子的說明與示範: CH03_07.c
3-2-5   位元運算子  (6) 3-2  運算子簡介 P 3-20 在本程式中主要是使用整數變數  (bit_test=12)  來執行各項位元運算子的功能,並以十進位整數顯示結果。  <ul><li>執行結果 </li></ul><ul...
3-2-6   條件運算子  (1) 3-2  運算子簡介 P 3-20 <ul><li>條件運算子( ?: )是 C 語言中唯一的「三元運算子」,它可以藉由判斷式的真假值,來傳回指定的值。   </li></ul>其使用語法如下所示: 例如:...
3-2-6   條件運算子  (2) 3-2  運算子簡介 P 3-21 <ul><li>程式範例: </li></ul>條件運算子的說明與示範: CH03_08.c
3-2-6   條件運算子  (2) 3-2  運算子簡介 P 3-21 在第 13 行的條件式中使用 && ( AND )運算子,來判斷兩科目的成績是否都超過  60 分。 結果由於 int_physical 變數內容值未超過  60 ,因此...
3-3   上機實習課程  (1) 3-3  上機實習課程 P 3-22 <ul><li>上機實習範例: </li></ul>CH03_09.c 以下程式範例是餘數運算子的實作,不過 % 運算子兩端的兩個運算元都必須是整數,請求取 125 對 ...
3-3   上機實習課程  (1) 3-3  上機實習課程 P 3-22 <ul><li>上機實習範例: </li></ul>CH03_09.c <ul><li>執行結果 </li></ul>
3-3   上機實習課程  (2) 3-3  上機實習課程 P 3-23 <ul><li>上機實習範例: </li></ul>CH03_10.c <ul><li>執行結果 </li></ul>
3-3   上機實習課程  (3) 3-3  上機實習課程 P 3-24 <ul><li>上機實習範例: </li></ul>CH03_11.c 左移運算子 (<<) 可將運算元內容向左移動 n 個位元,右移運算子 (>>) 則可將運算元內容右...
3-3   上機實習課程  (4) 3-3  上機實習課程 P 3-25 <ul><li>上機實習範例: </li></ul>CH03_12.c 已知兩數 a=0,b=0 ,請設計一程式來求取下兩關係運算式的值: a||b&&!a|!b (!a...
3-3   上機實習課程  (1) 3-3  上機實習課程 P 3-25 <ul><li>上機實習範例: </li></ul>CH03_12.c <ul><li>執行結果 </li></ul>
3-3   上機實習課程  (5) 3-3  上機實習課程 P 3-22 <ul><li>上機實習範例: </li></ul>CH03_13.c 請計算下列各式,並撰寫以下程式來驗證最後的計算結果:  a-b%6+12*b/2 (a*5)%8/...
3-3   上機實習課程  (5) 3-3  上機實習課程 <ul><li>上機實習範例: </li></ul>CH03_13.c <ul><li>執行結果 </li></ul>P 3-25
Upcoming SlideShare
Loading in...5
×

C語言 第三章 03 運算子、運算元與運算式

17,079
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
17,079
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
62
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

C語言 第三章 03 運算子、運算元與運算式

  1. 1. 王智祥 著 第三章 運算子、運算元     與運算式 3-1 運算式簡介 3-2 運算子簡介 3-1-1 運算式的分類 3-2-1 運算子優先順序 3-2-2 算術運算子 3-2-3 關係運算子 3-2-4 邏輯運算子 3-2-5 位元運算子 3-2-6 條件運算子 3-3 上機實習課程
  2. 2. 3-1-1 運算式的分類 <ul><li>下面簡單介紹這些運算式的特性與範例: </li></ul>3-1 運算式簡介 P 3-2 一元運算式: 由一元運算子所組成的運算式,在運算子左側或右側僅有一個運算元。 例如 -100 (負數)、 tmp-- (遞減)、 sum++ (遞增) 等。 二元運算式: 由二元運算子所組成的運算式,在運算子兩側都有運算元。例如 A+B (加)、 A=10 (等於)、 x+=y (遞增等於)等。 三元運算式: 由三元運算子所組成的運算式。由於此類型的運算子僅有「 :? 」 「條件運算子」,因此三元運算式又稱為「條件運算式」。 例如 , a>b?’   Y’   :’   N’ 。
  3. 3. 1. 當遇到一個運算式時,先區分運算子與運算元。 3-2-1 運算子優先順序 3-2 運算子簡介 P 3-4 <ul><li>在處理一個多運算子的運算式時,有一些規則與步驟是必須要遵守,如下所示: </li></ul>2. 依照運算子的優先順序作整理的動作。 3. 將各運算子根據其結合順序進行運算。
  4. 4. 3-2-1 運算子優先順序 3-2 運算子簡介 P 3-4 <ul><li>以下是 C 中各種運算子計算的優先順序: </li></ul>說   明 運算子 指定運算 = 條件運算子 ?: 邏輯運算 AND 邏輯運算 OR && || 位元運算 AND 位元運算 XOR 位元運算 OR & ^ | 比較運算等於 比較運算不等於 == != 比較運算大於 比較運算大於等於 比較運算小於 比較運算小於等於 > >= < <= 邏輯運算 NOT 負號 遞增運算 遞減運算 ! - ++ -- 括號 () 說   明 運算子 位元左移運算 位元右移運算 << >> 加法運算 減法運算 + - 乘法運算 除法運算 餘數運算 * / %
  5. 5.     3-2-2 算術運算子 (1) 3-2 運算子簡介 P 3-5 <ul><li>算術運算子的符號與名稱如下表所示: </li></ul>a-- --a 遞減 -- a++ ++a 遞增 ++ +a 正號 +x -a 負號 -x a%b 取餘數 % a/b 除 / a*b 乘 * a-b 減 - a+b 加 + 用 法 功 能 運算子
  6. 6. 10 – 2 * 3 3-2-2 算術運算子 (2) 3-2 運算子簡介 P 3-5 <ul><li>四則運算子 + - * / </li></ul>+ - * / 運算子與我們常用的數學運算方法相同, 先讓我們來看下面的例子: <ul><ul><li>上述的運算結果是 4 。 </li></ul></ul><ul><ul><li>因為負號的處理優先權高於乘號,所以會將 -2 乘上 3 得到 -6 , </li></ul></ul><ul><ul><li>接著 10 再與 -6 進行運算,最後即得到結果 4 。 </li></ul></ul>
  7. 7. 3-2-2 算術運算子 (3) 3-2 運算子簡介 P 3-6 <ul><li>程式範例:四則運算子的說明與示範: CH03_01.c </li></ul>
  8. 8. 在第 14 行中變數 a 與 c 相除後,因為兩個整數相除, 其結果不論是為整數或具有小數,都會將小數的部分捨去, 僅取整數的部分來儲存,雖然結果應該為 2.5 , 不過系統將小數部分捨去,所以最後輸出結果為整數 2 。 3-2-2 算術運算子 (3) 3-2 運算子簡介 P 3-6 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>
  9. 9. 3-2-2 算術運算子 (4) 3-2 運算子簡介 P 3-7 <ul><li>餘數運算子 % </li></ul>餘數運算子是計算兩數相除後的餘數,而且這兩個運算元必須為 整數、短整數或長整數型態。 例如: int a=15,b=8; printf(&quot;%d&quot;,a%b); /* 執行結果為 7*/
  10. 10. 3-2-2 算術運算子 (5) 3-2 運算子簡介 P 3-7 <ul><li>程式範例: </li></ul>餘數運算子 % 的說明與示範: CH03_02.c
  11. 11. 在第 8 行中,如果各位想在螢幕顯示出 % 餘數運算子, 必須要重覆兩次 % 字元。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>3-2-2 算術運算子 (5) 3-2 運算子簡介 P 3-7
  12. 12. 3-2-2 算術運算子 (6) 3-2 運算子簡介 P 3-7 <ul><li>正負號 + - </li></ul>正負號運算子主要表示運算元的正 / 負值,通常設定常數為正數時可以省略 + 號,例如「 a=5 」與「 a=+5 」意義是相同的。 而負號除了使常數為負數外,也可以使得原來為負數的數值變成正數。 例如: int a=-5; /* 使常數 5 為負數,並指定給整數變數 a*/ int b=-3; /* 使常數 3 為負數,並指定給整數變數 b*/ int b=-a; /* 將變數 a 的值加上負號,「負負得正」後, b 的值為 +5*/
  13. 13.   3-2-2 算術運算子 (7) 3-2 運算子簡介 P 3-8 <ul><li>遞增運算子 ++ </li></ul>遞增運算子為一元運算子,可用來將運算元內容值加 1 。 下表說明了遞增運算子這兩種運作方式: ++ 變數名稱 ; 變數名稱 ++; /* 宣告 a 與 b 為整數,初始值皆為 0*/ b=a; /* 先將 a 值指定給 b ,此時 a 、 b 都是 0*/ a=a+1; //a 值加 1 ,但 b 值不變,此時 a=1,b=0*/ int a=0,b=0; b=a++; /* 宣告 a 與 b 為整數,初始值皆為 0*/ a=a+1; /* 先將 a 值加 1 ,此時 a=1*/ b=a; // 再將 a 值指定給 b ,此時 b=1*/ int a=0,b=0; b=++a; 執 行 順 序 說 明 運算式
  14. 14.   3-2-2 算術運算子 (8) 3-2 運算子簡介 P 3-9 <ul><li>遞減運算子 -- </li></ul>遞減運算子與遞增運算子的格式與功能相仿,可將運算元內容值減 1 。 遞減運算子同樣具有兩種運作方式,如下表所示: -- 變數名稱 ; 變數名稱 --; /* 宣告 a 與 b 為整數,初始值皆為 0*/ b=a; /* 先將 a 值指定給 b ,此時 a 、 b 都是 0*/ a=a-1; /*a 值減 1 ,但 b 值不變,此時 a=-1,b=0*/ int a=0,b=0; b=a--; /* 宣告 a 與 b 為整數,初始值皆為 0*/ a=a-1; /* 先將 a 值減 1 ,此時 a=-1*/ b=a; /* 將 a 值指定給 b ,此時 b=-1*/ int a=0,b=0; b=--a; 執 行 順 序 說 明 運算式
  15. 15. 3-2-2 算術運算子 (9) 3-2 運算子簡介 P 3-9 <ul><li>程式範例: </li></ul>遞增運算子與遞減運算子 的說明與示範: CH03_03.c
  16. 16. 3-2-2 算術運算子 (9) 3-2 運算子簡介 在第 10 、 15 、 20 、 25 行,是說明前置與後置型遞增運算子與遞減運算子的各種運算結果。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>P 3-10
  17. 17. 3-2-2 算術運算子 (10) 3-2 運算子簡介 <ul><li>指定運算子 </li></ul>指定運算子 (=) 會將右側的值指定給左邊的變數。 例如: 指定運算子也可以搭配某個運算子,而形成「複合指定運算子」 ( Compound Assignment Operators )。 複合指定運算子的格式如下: P 3-10 a=5; b=a+3; a op= b;
  18. 18. 3-2-2 算術運算子 (10) 3-2 運算子簡介 此運算式的含意是將 a 的值與 b 的值以 op 運算子進行計算, 然後再將結果指定給 a 。 其中「 op= 」運算子,可以是以下 10 個運算子中的任何一個。 P 3-11 |= ^= &= >>= <<= %= /= *= -= += 複合指定運算子
  19. 19. 3-2-2 算術運算子 (11) 3-2 運算子簡介 P 3-11 <ul><li>程式範例: </li></ul>指定運算子的 說明與示範: CH03_04.c
  20. 20. 3-2-2 算術運算子 (11) 3-2 運算子簡介 在第 15 行的運算式「 a+=5 」相當於「 a=a+5 」,所以 a 的數值變成 10 ( a=5+5 )。 在第 16 及 17 行中,因為複合指定運算子的右側還有運算式,所以會優先執行此運算式,然後再將運算結果與複合指定運算子左側的變數進行運算,最後將結果指定給 b 及 c 。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>P 3-12
  21. 21.   3-2-3 關係運算子 (1) 3-2 運算子簡介 P 3-13 <ul><li>比較運算子共有六種,如下表所示: </li></ul>例如: a!=b 不等於 != a==b 等於 == a<=b 小於等於 <= a>=b 大於等於 >= a<b 小於 < a>b 大於 > 用 法 功 能 運算子 int a=3,b=5; printf(“%d”,a<b); /*a(3) 小於 b(5) ,結果成立,輸出數值 1*/ printf(“%d”,a>b); /*a(3) 大於 b(5) ,結果不成立,輸出數值 0*/
  22. 22. 3-2-3 關係運算子 (2) 3-2 運算子簡介 P 3-13 <ul><li>程式範例: </li></ul>關係運算子的說明與示範: CH03_05.c
  23. 23. 3-2-3 關係運算子 (2) 3-2 運算子簡介 P 3-14 第 08 、 10 與 12 行中分別利用關係運算子來比較兩個運算元的關係,並且分別輸出結果數值 1 與 0 。 此外在第 12 行中,請注意比較運算子「 == 」和指定運算子「 = 」並不相同。 「 = 」是用來指定運算元的值,而「 == 」是用在判斷式的等號關係中,兩者的功用並不相同。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>
  24. 24.     3-2-4 邏輯運算子 (1) 3-2 運算子簡介 P 3-14 <ul><li>邏輯運算子是運用在以判斷式來做為程式執行流程控制的時刻。 </li></ul><ul><li>邏輯運算子判斷結果的輸出與比較運算子相同,僅有「真 (True) 」與「假 (False) 」兩種,並且分別可輸出數值「 1 」與「 0 」。 </li></ul><ul><li>C 中的邏輯運算子共有三種,如下表所示: </li></ul>!(a>b) NOT ! a>b || a<c OR || a>b && a<c AND && 用 法 功 能 運算子
  25. 25.   3-2-4 邏輯運算子 (2) 3-2 運算子簡介 P 3-15 <ul><li>&& 運算子 </li></ul>當 && 運算子 (AND) 兩邊的運算式皆為真 (true) 時,其執行結果才為真,任何一邊為假( flase )時,執行結果都為假。 例如運算式「 a>b && a>c 」,則執行結果有四種情形。 如下表所示: 假 假 假 假 真 假 假 假 真 真 真 真 a>b && a>c 的執行結果 a > c 的真假值 a > b 的真假值
  26. 26. 3-2-4 邏輯運算子 (3) 3-2 運算子簡介 P 3-15 <ul><li>|| 運算子 </li></ul>當 || 運算子 (OR) 兩邊的運算式,其中一邊為真 (true) 時,執行結果就為真,否則為假。 如下表所示: 例如運算式「 a>b || a>c 」,則執行結果同樣有四種情形。 假 假 假 真 真 假 真 假 真 真 真 真 a>b || a>c 的執行結果 a > c 的真假值 a > b 的真假值
  27. 27.   3-2-4 邏輯運算子 (4) 3-2 運算子簡介 P 3-15 <ul><li>! 運算子 </li></ul>這是一元運算子的一種,可以將運算式的結果變成相反值。 如下表所示: 例如運算式「 !(a>b) 」,則執行結果有兩種情形。 真 假 假 真 !(a > b) 的執行結果 a > b 的真假值
  28. 28. 3-2-4 邏輯運算子 (5) 3-2 運算子簡介 P 3-16 <ul><li>程式範例: </li></ul>邏輯運算子的說明與示範: CH03_06.c
  29. 29. 3-2-4 邏輯運算子 (5) 3-2 運算子簡介 P 3-17 在第 12 行中 a<b 且 b<c ,所以使用 && ( AND )運算子來計算這兩個運算式時,得到的結果為「真」( true ),因此傳回值為 1 。 在第 15 行中, a>b 運算式並不成立,傳回值應該為 0 ,不過經過 NOT(!) 運算子計算後,結果改變為 1 ( true )。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>
  30. 30. 3-2-5 位元運算子 (1) 3-2 運算子簡介 P 3-17 <ul><li>運算元在記憶體中的值,實際上是採取二進位的形式。 </li></ul><ul><li>C 語言中提供有六種二進位的位元運算子。 </li></ul>如下表所示: A>>n A 進行右移 n 個位元運算 >> A<<n A 進行左移 n 個位元運算 << A^B A 與 B 進行 XOR 運算 ^ ~A A 進行 NOT 運算 ~ A | B A 與 B 進行 OR 運算 | A & B A 與 B 進行 AND 運算 & 使用語法 說明 位元運算子
  31. 31. 3-2-5 位元運算子 (2) 3-2 運算子簡介 P 3-18 <ul><li>& (AND) </li></ul>執行 AND 運算時,對應的兩位元都為 true 時,運算結果才為 true 。 例如 a=12 ,則「 a&7 」得到的結果為 4 。 因為 12 的二進位表示法為 1100 , 7 的二進位表示法為 0110 ,兩者執行 AND 運算後,結果為 (100) 2 也就是 (4) 10 。 下面以指令的方式來進行上述的位元運算 。 例如: int a=12; printf(“%d”,a&7); /* 輸出結果 4*/
  32. 32. 3-2-5 位元運算子 (3) 3-2 運算子簡介 P 3-18 <ul><li>| (OR) </li></ul>執行 OR 運算時,對應的兩位元只要任一位元為 true ,運算結果即為 true 。 例如 a=12 ,則 a | 7 得到的結果為 15 。 <ul><li>^ (XOR) </li></ul>執行 XOR 運算時,對應的兩位元只要任一位元為 true ,則運算結果即為 true 。 但是如果同時為 true 或 false ,則結果為 false 。 例如 a=12 ,則 a^7 得到的結果為 11 。
  33. 33. 3-2-5 位元運算子 (4) 3-2 運算子簡介 P 3-18 <ul><li><< ( 左移 ) </li></ul>左移運算子 (<<) 可將運算元內容向左移動 n 個位元,其格式如下: << 也可以和 = 號結合成 <<= 指定運算子。 << 其運算過程先執行位元左移的動作,然後再將結果儲存回原來的變數中。 a<<n int a=12; /* 宣告變數 a 初始值為 12*/ a<<=2; /*a 左移兩位元後成為 48 ,並將值存回 a 中 */ printf(“%d ”,a); /* 輸出 a 的值為 48*/
  34. 34. 3-2-5 位元運算子 (5) 3-2 運算子簡介 P 3-19 <ul><li>右移 (>>) </li></ul>右移運算子 (>>) 與左移相反,可將運算元內容右移 n 個位元,其格式如下: <ul><li>~ (NOT) </li></ul>NOT 是位元運算子較為特殊的一種,因為只需一個運算元即可運算。 執行結果則是把運算元內的每一個位元反相。 也就是原本 1 的值變成 0 , 0 的值變成 1 。 例如 a=12 ,則 (~a) 得到的結果為 -13 。 a>>n
  35. 35. 3-2-5 位元運算子 (6) 3-2 運算子簡介 P 3-19 <ul><li>程式範例: </li></ul>位元運算子的說明與示範: CH03_07.c
  36. 36. 3-2-5 位元運算子 (6) 3-2 運算子簡介 P 3-20 在本程式中主要是使用整數變數 (bit_test=12) 來執行各項位元運算子的功能,並以十進位整數顯示結果。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>
  37. 37. 3-2-6 條件運算子 (1) 3-2 運算子簡介 P 3-20 <ul><li>條件運算子( ?: )是 C 語言中唯一的「三元運算子」,它可以藉由判斷式的真假值,來傳回指定的值。 </li></ul>其使用語法如下所示: 例如: 判斷式 ? 結果為真的值 : 結果為假的值 (a>b?1:-1)
  38. 38. 3-2-6 條件運算子 (2) 3-2 運算子簡介 P 3-21 <ul><li>程式範例: </li></ul>條件運算子的說明與示範: CH03_08.c
  39. 39. 3-2-6 條件運算子 (2) 3-2 運算子簡介 P 3-21 在第 13 行的條件式中使用 && ( AND )運算子,來判斷兩科目的成績是否都超過 60 分。 結果由於 int_physical 變數內容值未超過 60 ,因此判斷式的結果為「假」( false ),所以傳回「 : 」符號後的字元「 N 」,並且指定給 chr_pass 變數。 <ul><li>執行結果 </li></ul><ul><li>程式解說 </li></ul>
  40. 40. 3-3 上機實習課程 (1) 3-3 上機實習課程 P 3-22 <ul><li>上機實習範例: </li></ul>CH03_09.c 以下程式範例是餘數運算子的實作,不過 % 運算子兩端的兩個運算元都必須是整數,請求取 125 對 4 、 5 、 6 的餘數運算。 另外如果要求取實數間的餘數運算,可利用 fmod() 函數: double fmod(double x,double y);
  41. 41. 3-3 上機實習課程 (1) 3-3 上機實習課程 P 3-22 <ul><li>上機實習範例: </li></ul>CH03_09.c <ul><li>執行結果 </li></ul>
  42. 42. 3-3 上機實習課程 (2) 3-3 上機實習課程 P 3-23 <ul><li>上機實習範例: </li></ul>CH03_10.c <ul><li>執行結果 </li></ul>
  43. 43. 3-3 上機實習課程 (3) 3-3 上機實習課程 P 3-24 <ul><li>上機實習範例: </li></ul>CH03_11.c 左移運算子 (<<) 可將運算元內容向左移動 n 個位元,右移運算子 (>>) 則可將運算元內容右移 n 個位元,請設計一程式求取 168 向左移 5 個位元後,再右移 5 個位元後的值。 <ul><li>執行結果 </li></ul>
  44. 44. 3-3 上機實習課程 (4) 3-3 上機實習課程 P 3-25 <ul><li>上機實習範例: </li></ul>CH03_12.c 已知兩數 a=0,b=0 ,請設計一程式來求取下兩關係運算式的值: a||b&&!a|!b (!a||b)-(a&&!b||!a)
  45. 45. 3-3 上機實習課程 (1) 3-3 上機實習課程 P 3-25 <ul><li>上機實習範例: </li></ul>CH03_12.c <ul><li>執行結果 </li></ul>
  46. 46. 3-3 上機實習課程 (5) 3-3 上機實習課程 P 3-22 <ul><li>上機實習範例: </li></ul>CH03_13.c 請計算下列各式,並撰寫以下程式來驗證最後的計算結果: a-b%6+12*b/2 (a*5)%8/5-2*b) (a%8)/12*6+12-b/2
  47. 47. 3-3 上機實習課程 (5) 3-3 上機實習課程 <ul><li>上機實習範例: </li></ul>CH03_13.c <ul><li>執行結果 </li></ul>P 3-25
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×