びっくりコード
ここで紹介されていたコード。元のコードそのものはリンク先を参照。
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