ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

びっくりコード

びっくりコード
ここで紹介されていたコード。元のコードそのものはリンク先を参照。

BOOL func()
{
    // なんらかの処理

    // pはなにかのポインタ変数
    return !!*p;
}

この最後のreturn文を見て、最初はまったく何を意味しているかさっぱり分からなかった。!演算子論理否定演算子てあり、それを二つ重ねているので否定の否定で肯定。この意味がさっぱり。しばらく考えて演算結果をBOOL値にするためかと気が付いた。つまり次のようなコード。

BOOL func()
{
    // 略

    return (*p != 0);
}

このような書き方を初めて見た。こんなテクニックもあるのかと感心した。でも自分では使わないだろう。

via http://www.kt.rim.or.jp/~kbk/zakkicho/09/zakkicho0910a.html#D20091005-4