null+****@clear*****
null+****@clear*****
2012年 3月 15日 (木) 18:17:21 JST
Kouhei Sutou 2012-03-15 18:17:21 +0900 (Thu, 15 Mar 2012) New Revision: 826615647104df75e8b269e9999c290c75930c2e Log: doc coding-style: add about number in condition Modified files: doc/source/developer/coding_style.rst Modified: doc/source/developer/coding_style.rst (+18 -0) =================================================================== --- doc/source/developer/coding_style.rst 2012-03-15 18:11:04 +0900 (ea334e4) +++ doc/source/developer/coding_style.rst 2012-03-15 18:17:21 +0900 (3cd0d2a) @@ -467,3 +467,21 @@ bool型を用いる char *name = NULL; if (name == NULL) { ... } +数値は比較する +^^^^^^^^^^^^^^ + +CやC++では ``0`` は偽、 ``0`` 以外は真の値となるが、条件式に数値を使う場合は ``strcmp(...) == 0`` などというように明示的に比較する。 + +C++では真偽値に ``bool`` を使うためこのような状況は発生しないが、C言語由来のAPIでは ``int`` で真偽値を表現している場合が多い。しかし、 ``int`` だけでは真偽値として使っているか本当に数値として使っているかがわかりにくいため、 ``int`` のときはすべて数値として扱う。 + +よい例: + + if (memcmp(value1, value2, value_size) == 0) { + printf("same value!\n"); + } + +悪い例( ``0`` を偽の値として扱っている): + + if (!memcmp(value1, value2, value_size)) { + printf("same value!\n"); + }