トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> トリッキーなコード >> 三項演算子の書き方 及び 条件分岐代入について (C言語)

三項演算子の書き方マナー 及び 三項演算子を使った代入について

いきなりですが、三項演算子、皆さん使ってますか~~??

条件分岐には、「if-else」や「switch」を多用しがちですが(←かく言う私も、その内の1人^^;)、
たまには、三項演算子も愛してあげよう! というお話です。


三項演算子をネストさせることにより、switchの代わりに使うこともできます。

↓↓こんな感じ↓↓
result = (n == 0 ? 0処理
                 : n == 1 ? 1処理
                          : n == 2 ? 2処理
                                   : デフォルト処理);
ちなみに、三項演算子を使用する際は、?と:は縦に揃えて書くのがマナーなんだそうです。 (ご存知でしたか??) そ~いえば、自らつけた「if-else, switchの使用禁止、条件分岐は全て三項演算子で行うこと」という制約下で、 コードをかいてた猛者(変人?)は知ってます。 まぁ、コードが読み辛くならなければ、何使って条件分岐しようが、関係ないんでしょうかね??^^;) 次に、ちょっぴり面白い三項演算子の小技をご紹介します。
#include <stdio.h>
#include <time.h>   // for time()
#include <stdlib.h> // for srand()

int main(void)
{
    int i, a, b;

    a = 0;
    b = 0;

    srand((unsigned int)time(NULL));

    for (i = 0; i < 10; i++) {

        a = b = 0;

        * ( (rand() % 2 == 0) ? &a : &b) = rand();

        printf("%6d %6d\n", a, b);
    }

    return 0;
}
変数a, bのどちらかにランダムな値を、もう一方には0をセットするプログラムです。 実行結果は以下の通り 三項演算子の条件分岐代入 三項演算子を使用し、代入先の変数を切り分けているのがトリッキーです^^;) ちなみに、
* ( (rand() % 2 == 0) ? &a : &b) = rand();
の部分は、
( (rand() % 2 == 0) ? a : b) = rand();
だと、コンパイルエラーになりますよ~。
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。