C 語言快速導覽 - 算術運算

C 語言的算術運算有加、減、乘、除、取餘數等,這些都需要兩個運算元,如下列表

運算子功能範例
+a + b
-a - b
*a * b
/a / b
%取餘數a % b


基本資料型態都可以做算術運算,以下為整數型態做算術運算的例子
#include <stdio.h>

int main(void)
{
    int a, b, c;
    a = 8;
    b = 3;
    
    c = a + b;
    printf("a + b = %d\n", c);
    
    c = a - b;
    printf("a - b = %d\n", c);
    
    c = a * b;
    printf("a * b = %d\n", c);
    
    c = a / b;
    printf("a / b = %d\n", c);
    
    c = a % b;
    printf("a %% b = %d\n", c);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:arithint.c
    功能:示範整數的算術運算
    作者:張凱慶
    時間:西元2010年4月 */


編譯後執行,結果如下



注意程式的第 18 行
c = a / b;


由於是利用整數型態進行計算,所以得到的結果,程式印出的第四行也會是整數,這被稱為整數除法。


以下為浮點數型態做算術運算的例子,請留意,浮點數型態不能做取餘數的計算
#include <stdio.h>

int main(void)
{
    float a, b, c;
    a = 8.3;
    b = 2.2;
    
    c = a + b;
    printf("a + b = %f\n", c);
    
    c = a - b;
    printf("a - b = %f\n", c);
    
    c = a * b;
    printf("a * b = %f\n", c);
    
    c = a / b;
    printf("a / b = %f\n", c);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:arithfloat.c
    功能:示範整數的算術運算
    作者:張凱慶
    時間:西元2010年4月 */


編譯後執行,結果如下



由於字元型態直接對應到 ASCII 編碼的整數值,所以利用算術運算來進行字元符號的轉換,如以下為英文大小寫轉換的例子
#include <stdio.h>

int main(void)
{
    char t = 'T';
    
    printf("t = %c\n", t);
    
    t = t + 32;
    printf("大小寫轉換後 t = %c\n", t);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:arithchar.c
    功能:示範字元的算術運算
    作者:張凱慶
    時間:西元2010年4月 */


編譯後執行,結果如下





5 則留言:

Unknown 提到...

不好意思,能請教一個問題嗎,為什麼我打
(3-0)/(9-0)*(9-0),為什麼程式答案總是都是0,謝謝

Kaiching Chang 提到...

因為 (3-0)/(9-0) 做整數除法會得到 0 ,所以這裡要得到正確結果要做強制型態轉換,也就是要在 (3-0)/(9-0)*(9-0) 的前面加上 (float) 變成浮點數。

Unknown 提到...

謝謝,不過我加了後,他變0.0000000

Unknown 提到...

因為看書寫的內插搜尋法,但是中間值都是從零開始,對我這個新手真不知道如何是好啊

Kaiching Chang 提到...

其他的程式問題,請到 G+ 社群或 FB 社團發問吧!謝謝 ^_^