C 語言初學教材 - 第二章 邏輯陳述 目錄

函數 (function) 是 C 程式執行的單位,陳述 (statement) 則是函數裡程式碼執行的單位。 C 語言裡的單一陳述要以分號結尾 ; ,常見的陳述有以下幾類

種類例子
運算式陳述指派、呼叫函數
複合陳述大括弧圍起來的地方
條件陳述if 、 if-else 、 switch
重複陳述while 、 do-while 、 for


最常見的就是運算式陳述了,所謂的運算式具有運算元及運算子,也可以單獨只有運算元,例如以下的程式碼在螢幕上印出 "Hello, world!" ,然後再印出新行
printf("Hello, world!\n");


單獨寫任何常數數值都是合法的常數運算式,如
1234;
56.7;
'\n';
"A word to the wise is enough.";


雖然這樣是合法的,可以成功編譯,但是這樣編譯出的執行檔什麼事也不會做。我們通常都會用變數處理資料,因此將常數數值指派給變數是最常用的陳述之一,例如
int a = 1234;
float b = 56.7;
char c = '\n';
char *d = "A word to the wise is enough.";


宣告變數就可以接上等號 = ,將常數數值直接指派給變數。


C 語言具有豐富的運算子,如下表依運算子的優先順序列出 C 所有的運算子
運算子結合規則
() [] -> .左到右
! ~ ++ -- + - * & (type) sizeof右到左
* / %左到右
+ -左到右
<< >%gt;左到右
< <= > >=左到右
== !=左到右
&左到右
^左到右
|左到右
&&左到右
||左到右
?:右到左
= += -= /= %= &=右到左
^= |= <<= >>=右到左
,左到右


我們接下來會依需要來討論各種運算子,首先來用常用的算術運算子來寫個加法器
運算子功能範例
+a + b
-a - b
*a * b
/a / b
%取餘數a % b


加法器是很簡單的加法計算,我們再來將加法器擴展成四則運算器


四則運算器得分三次輸入,我們發展新版本的四則運算器,像手邊的小型計算機一樣,一次輸入就 OK 了。


有些錯誤必須避免,小心!除以 0 ,同時我們也來看看關係運算子
運算子功能範例
<小於a < b
<=小於等於a <= b
>大於a > b
>=大於等於a <= b
==相等a == b
!=不等a != b


邏輯運算子也很常用
運算子功能範例
!!a
&&a && b
||a || b


四則運算器還有些問題需要解決,若是該輸入整數卻輸入字元,會有奇怪的錯誤發生,因此要解決輸入型態不相符的問題


另外遞增遞減也是很常用的概念
運算子功能範例
++前遞增++a
++後遞增a++
--前遞減--a
--後遞減a--


指派運算子也可以和算術運算子合用
運算子功能範例
+=相加同時指派a += b
-=相減同時指派a -= b
*=相減同時指派a *= b
/=相除同時指派a /= b
%=取餘數同時指派a %= b


我們接下來繼續改進打招呼的程式,向使用者 Say Hello!


應該要顯示出現在時刻,所以要處理時間問題


設計與使用者互動程式還是遊戲有趣點,所以最後來玩猜數字吧


問題與討論
  1. 函數跟陳述有什麼不同?
  2. 陳述需以什麼符號結尾?
  3. 遞增遞減跟算術運算有什麼不同?
  4. 想想要怎麼設計猜數字遊戲呢?我們能不能取得一個隨機數當答案呢?




3 則留言:

Unknown 提到...

<= 小於等於 a <= b
<= 大於等於 a <= b

運算子的部分出了一點小錯
即便我這種初新者都看得懂 大家應該也都知道..
只是改正會比較好 謝謝!

Kaiching Chang 提到...

這邊打錯字了,已修改,感謝指正 ^_^

呂誌軒 提到...

*= 相減同時指派 a *= b

-------------------------------
*= 相乘同時指派 a *= b

應該是乘