C++ 速查手冊 V1.00 - 單元 4.1 - 算術運算




C++ 的算術運算子 (arithmetic operator) 包含加、減、乘、除、取餘數,皆需兩個運算元構成運算式,如下列表


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

以下為整數型態 (integer type) 做算術運算的例子


001 #include <iostream>
002
003 int main() {
004    int a, b, c;
005
006    a = 99;
007    b = 36;
008
009    c = a + b;
010    std::cout << "a + b = "
011              << c
012              << std::endl;
013
014    c = a - b;
015    std::cout << "a - b = "
016              << c
017              << std::endll;
018
019    c = a * b;
020    std::cout << "a * b = "
021              << c
022              << std::endl;
023
024    c = a / b;
025    std::cout << "a / b = "
026              << c
027              << std::endl;
028
029    c = a % b;
030    std::cout << "a % b = "
031              << c
032              << std::endl;
033
034    return 0;
035 }
036
037 /* Kaiching Chang
038    u0401_1.cpp
039    2014-02 */

編譯後執行,結果如下


$ g++ u0401_1.cpp
$ ./a.out
a + b = 135
a - b = 63
a * b = 3564
a / b = 2
a % b = 27
$

注意程式的第 24 行


024 c = a / b;

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


以下為浮點數型態做算術運算的例子,請留意,浮點數型態不能做取餘數的計算


001 #include <iostream>
002
003 int main() {
004    double a, b, c;
005
006    a = 9.9;
007    b = 3.6;
008
009    c = a + b;
010    std::cout << "a + b = "
011              << c
012              << std::endl;
013
014    c = a - b;
015    std::cout << "a - b = "
016              << c
017              << std::endl;
018
019    c = a * b;
020    std::cout << "a * b = "
021              << c
022              << std::endl;
023
024    c = a / b;
025    std::cout << "a / b = "
026              << c
027              << std::endl;
028
029    return 0;
030 }
031
032 /* Kaiching Chang
033    u0401_2.cpp
034    2014-02 */

編譯後執行,結果如下


$ g++ u0401_2.cpp
$ ./a.out
a + b = 13.5
a - b = 6.3
a * b = 35.64
a / b = 2.75
$

由於字元型態直接對應到 ASCII 編碼的整數值,因此可以利用算術運算來進行字元符號的轉換,如以下為英文大小寫轉換的例子


001 #include <iostream>
002
003 int main() {
004    char t = 'T';
005
006    std::cout << "before: "
007              << t
008              << std::endl;
009
010    t = t + 32;
011    std::cout << "after : "
012              << t
013              << std::endl;
014
015    return 0;
016 }
017
018 /* Kaiching Chang
019    u0401_3.cpp
020    2014-02 */

編譯後執行,結果如下


$ g++ u0401_3.cpp
$ ./a.out
before: T
after : t
$

continue ...

沒有留言: