else 為關鍵字之一, if-else 陳述為單一 if 陳述的延伸,提供若真則執行某某,若非執行某某的後者,也就是條件為真,執行 if 底下大括弧的程式,條件為假則執行 else 底下大括弧的陳述。
利用 if-else 可以讓程式簡化,例如
if (a > b) { printf("a > b\n"); } else { printf("a < b\n"); }
這樣程式只需要做單一的條件判斷。沒有用 else 就得寫兩個 if ,程式必須做兩次條件判斷
if (a > b) { printf("a < b\n"); } if (a < b) { printf("a > b\n"); }
當程式發展規模越來越大的時候,差別就出現了,多餘的條件判斷會降低程式的效率。
指派運算子,也就是單一個等號 = ,可以和其他的運算子連用,運算後同時指派,使程式碼更為簡潔
運算子 | 功能 | 範例 |
---|---|---|
+= | 相加同時指派 | a += b |
-= | 相減同時指派 | a -= b |
*= | 相減同時指派 | a *= b |
/= | 相除同時指派 | a /= b |
%= | 取餘數同時指派 | a %= b |
簡單說, a += b 就是把 a + b 的結果再指派給變數 a 。到目前為止,我們介紹過的算術運算子都可以和指派運算子連用。這種寫法在許多 C 程式都常出現,因此需要習慣這種表示方式,我們以一個例子示範如下
#include <stdio.h> int main(void) { int a = 10; int b = 10; a += 1; b++; a -= 1; --b; if (a == b) { printf("a == b\n"); } else { printf("a != b\n"); } return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:assign.c 功能:示範運算同時指派 作者:張凱慶 時間:西元2010年7月 */
編譯後執行,如下
這個例子也說明
a += 1;
與
a++; // 或++a;
的計算結果是相同的。同樣的
a -= 1;
與
a--; // 或--a;
的計算結果也是相同的。
問題與討論
- 程式寫的簡潔有什麼優點?又有什麼缺點?
- 為什麼說多餘的條件判斷會降低程式的效率?
- 除了算術運算子以外,位元運算子也可以跟指派願算子合用,位元運算子的功能是什麼呢?
- a += 1; 、 a++; 、 ++a; ,三者會得到相同的運算結果,你能不找出其他不同寫法但有相同結果的運算式?
沒有留言:
張貼留言