« はてなスター設置その後 | トップページ | コメントがおかしい? »

2007年8月 4日 (土)

C言語で知らなかったこと

たいしたことじゃないんですけど、C言語での書き方で新しく知ったので書いてみる。
まずはサンプルをprintfの引数に注目。

#include <stdio.h>

int main()
{
    int i;

    printf("%d\n", (i = 3, i * 3));
    printf("%d\n", (assert(i == 3), 10));

    return 0;
}

というプログラムの実行結果が

9
10

となる。
一個目のprintfの引数で、

  1. iに3が代入される
  2. 3が代入されているiに3をかける

といったように()の中の式がちゃんと評価されている。んでもって最後のが()の最終的な評価の値になっている。
これはSolaris付属?のCコンパイラでも動いたので、GNUの拡張ってわけでもなさそう。

使える場面は、とりあえず二個目のprintfで書いたような、assertを絡めるときくらいしか思いつかないけど、おもしろいうごきだと思う。

|

« はてなスター設置その後 | トップページ | コメントがおかしい? »

コメント

「コンマ演算子」で調べてみると良いかと。

投稿: 通りすがり | 2007年9月15日 (土) 午後 08時49分

> 通りすがりさん
情報ありがとうございます。
演算子名もちゃんとあるのですね。
今になってですが、for文で使っていた事があることに気付きました。

投稿: ココサブ | 2007年9月15日 (土) 午後 09時04分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/126478/16004469

この記事へのトラックバック一覧です: C言語で知らなかったこと:

« はてなスター設置その後 | トップページ | コメントがおかしい? »