サイトマップ / C言語講座出入り口総目次目次:流れの制御>三項演算子(2)

青い直線

三項演算子(2)

青い直線

[三項演算子(1)]←このソース→[マクロ処理]

/* 可読性の悪いコード */

/* 今日も三項演算子について、学びます。

    putchar(( c >= 'a' && c <= 'z')? (c  - 'a' + 'A'): ((c >= 'A' && c <= 'Z')? (c  - 'A' + 'a'): c));

上記のコードを実行すると何が起こるでしょうか。かなり時間をかけて詳しく見ないとわからないと思います。これは極端な例ですが、少し複雑な処理を行う時は適切なコメントを付けておきましょう。

上記のコードの最小単位のカッコの中を、日本語に置き換えると次のようになります。

    putchar((cが小文字)? (cを大文字にする): ((cが大文字)? (cを小文字にする): cはそのまま));

" 英小文字なら大文字に、大文字なら小文字に変換し、どちらでもなければ変換しないで画面に出力する " ということです。これを if else を使い、更に、コメントを付けたものが今日のソースプログラムです。これ以上の説明はしません。コメントを見て下さい。 */

/* ここからソースプログラム */

#include  <stdio.h>

void main(void);

void main(void)
{
    int c;

    printf("\n英大文字か小文字を幾つか入力して下さい\n");

    while ((c = getchar(  )) != '\n') {         /* キーボードから1文字入力 */
        if (c >= 'a' && c <= 'z')               /* c が小文字ならば */
            c = c  - 'a' + 'A';                 /* 大文字に変換 */
        else if (c >= 'A' && c <= 'Z')          /* c が大文字ならば */
            c = c  - 'A' + 'a';                 /* 小文字に変換 */
        putchar(c);                             /* 変換後の文字を出力 */
    }
}

/* ここまでソースプログラム */

/*

    c = c  - 'a' + 'A' ;

上記のコードについて、補足説明をします。文字は数字で管理されています。アルファベットの大文字と小文字は、abc 順にそれぞれ連続した数字が付けられています(復習)。従って、もしc が 'a' なら、上記の式に代入すると、

    c = 'A';

となり、大文字に変換されます。 */

[三項演算子(1)]←このソース→[マクロ処理]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線

サイトマップ / C言語講座出入り口総目次目次:流れの制御>三項演算子(2)