法大奥山研究室

 previous  contents

7.2. 四則演算子 +, -, *, /, %


 四則演算については,多くのプログラミング言語で使用されているものと同じです。ただ,文字を ASCIIコード番号で扱っているため,文字についても四則演算ができます。

■加減演算子(Additive Operators)[C99, 6.5.6]
+加算
-減算
■乗除演算子(Multiplicative Operators) [C99, 6.5.5]
* 乗算
/ 除算:第2変数が 0 の場合,未定義の動作となる。整数型同士の場合,少数部は切り捨てられる。
% 剰余:第2変数が 0 の場合,未定義の動作となる。

整数型同士で a/b が計算可能な場合,

(a/b)*b + a%b

a に等しくなります。(確認してみください。)

/* Example 7.1 */

#include <stdio.h>

int main(void)
{
       unsigned char c = 't';

       printf("%c (%d)\n", c, c);

       c = c + 'A' - 'a';
       printf("%c (%d)\n", c, c);

       return 0;
}

実行結果です。

t (116)
T (84)

丸括弧内は,ASCIIコード番号です。c + 'A' - 'a' は小文字から大文字への変換式です。(但し,変数 c の値が小文字の場合。付言すると,標準ライブラリ ctype.h に小文字を大文字に変換する関数 toupper と,大文字を小文字に変換する関数 tolower があります。また,ctype.h には小文字であることをテストする islower関数,大文字であることをテストする isupper関数などもあります。)

 式 c + 'A' - 'a'int型,そして,unsigned char型へ変換されます。(この例の場合,unsigned charint とすれば,型変換は一切行われない。)

/* Example 7.2 */

#include <stdio.h>

int main(void)
{
       long long l = 111111111LL, m = 0LL;

       m = l*l;
       printf("%lld\n", m);
       m = m % 11;
       printf("%lld\n", m);

       return 0;
}

実行結果です。

12345678987654321
1

 previous  contents