16.5 代入演算

以前に C 言語では代入文も演算の一種である事を学んだ。代入が演算として 定義されているのは非常に重要な事であり、C 言語の特徴にもなっている。 一般に演算には結果が常に伴う。例えば、4*3 には 12 という 結果がある。同じように、a=4 という代入演算にも結果があり、 結果は代入した値 4 になっている。このことを使うと次の様な文が 可能である。

    int a, b;
    a = b = 3;

この例では、最初に b = 3 が評価され、その結果は 3 になる。 つまり、a = ( b = 3 ) と考えれば良い。従って、b = 3 の代入が 終了した時点では、a = 3 となるのである。

これを更に応用すると、次の例は、
    char c;
    c = getchar();
    if ( c != EOF ){
        ...
簡潔に以下のように書くことが出来る。
    char c;
    if ( (c=getchar()) != EOF ){
        ...

但し、a > b > 0 などは文法的には正しいが、通常数学で考えるようには ならない点に注意しよう。何故ならば、この場合、(a > b) > 0 と考えられる のだが、a > b は比較演算なので、結果は真または偽(多くの場合 1 又は 0) なので、それと 0 との大小比較という意味になるのであるから注意しよう。

先の標準関数 putchar(), getchar() と、 この代入演算を使うと次の例のように 一文字づつ読み取って、出力することが出来る。
/* 入力またはファイルの終わりまで読みとり、出力 */
#include <stdio.h>
main(){
    char c;
    while( (c=getchar()) != EOF ){
        putchar(c);
    }
}

注意 キーボードからファイルの終わりを入力するには、crtl+D ( コントロールキーと d を同時に )押せば良い。



最初のページ 戻る 次へ 最後のページ 目次
Hiroyasu Asami