Zi 字媒體
2017-07-25T20:27:27+00:00
第三篇要講的是運算,有了變數以後,總該拿幾個變數來運算看看吧?
C 語言除了有基本的五則運算以外,還有一些像是邏輯運算、遞增遞減運算、指定運算……等等。
五則運算
咦?不是四則運算嗎?怎麼變五則運算?
除了加(+)、減(-)、乘(*)、除(/)以外,還有一個用來取餘數用的運算子 %,用法是 a%b 會得到 a 除以 b 的餘數。例如:
13 % 6 = 1
25 % 5 = 0
93 % 7 = 2
那麼,變數和變數之間的運算,在五則運算裡面比較簡單。例如:
#include
int main(){
int x=15, y=6;
int a = x+y;
int b = x-y;
int c = x*y;
int d = x/y;
int e = x%y;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%d\n", d);
printf("%d\n", e);
return 0;
}
輸出結果會是:
21
9
90
2
3
註:這裡使用了輸出用的 printf 函式,等到輸出入的時候會再詳細說明。
以上看起來好像沒有什麼問題,但是,咦? 15/6 怎麼會是 2?
因為在 C 語言裡面,整數(int)運算過程會無條件捨去小數點以下的部分,所以 2.5 會被捨去,變成 2。
如果要正確的顯示小數點,應該用浮點數來運算。這個部分到下一篇也會再說一次。
遞增、遞減運算子
遞增運算子(++)和遞減運算子(–)可是 C/C++ 獨有的運算子,它們的功能就是:用來+1或用來-1,用法就是:a++、++a 或 a–、–a。由於遞增和遞減運算子的用法相同,以下皆以遞增運算子來做示範。
a++ 的結果和 a = a + 1 是一樣的,例如:
#include
int main(){
int a=7, b=7;
a++;
b++;
printf("%d\n", a);
printf("%d\n", b);
}
輸出結果無庸置疑的會是 8 和 8。
不過下面這段程式碼:
#include
int main(){
int a=7, b=7;
printf("%d", ++a);
printf("%d", b++);
}
輸出結果卻是 8 和 7。因為第 5 行會先把 a 做遞增後再輸出,第 6 行是先輸出 b 再做遞增,這是使用遞增/遞減運算子比較需要注意的部分。
如果要細講的話:
int a=3, int num;
num = a++;
num = ++a;
第 2 行可以拆成 num = a; a = a + 1;;第 3 行可以拆成 a = a + 1; num = a;。
另外,遞增遞減運算子只有加減法,並沒有 a** 或 a// 之類的東西可以用唷,當然更沒有 a%% xD。
指定運算子
指定運算子則是大部分的運算子都有,有 +=、-=、=、/=、%=*。可以讓撰寫程式的時候變得比較方便,不用再多寫一次變數名稱,例如:
a += 3 等同a = a+3`
a -= 3 等同 a = a-3
a *= 3 等同 a = a*3
a /= 3 等同 a = a/3
a %= 3 等同 a = a%3
當然還有別的,例如**&=、|=、<<=**、……等等。但是這些運算並不常見,在這裡省略不談。
那直接看例子吧:
#include
int main(){
int a=7, b=7, c=7, d=7, g=7;
a += 3;
b -= 3;
c *= 3;
d /= 3;
e %= 3;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%d\n", d);
printf("%d\n", e);
return 0;
}
輸出結果:
10
4
21
2
1
那變數運算的部分大概到這邊,這些運算子看起來很簡單,不過還是要試著練習一次才有效果。如果在設計程式的時候常常忘記某件事情的話,沒關係,總是要錯個幾次才記得起來 XD
註:
關係運算子和邏輯運算子會等到選擇結構的時候再一起講解
位移運算暫時沒有打算講解。
括號運算子就是 ( ) 起來的東西要先算 XD
我要學會 C 語言 目錄
我要學會 C 語言(一):Hello, World!
我要學會 C 語言(二):有小數點的數不是整數之資料型態
我要學會 C 語言(三):加加減減乘除的變數運算
我要學會 C 語言(四):輸入與輸出好好玩
我要學會 C 語言(五):如果這樣會怎樣之選擇結構
我要學會 C 語言(六):繞啊繞轉啊轉的迴圈結構
我要學會 C 語言(七):寫一遍就能用好幾遍好方便的函式
寫了
5860316篇文章,獲得
23313次喜歡