ぱっと見て「ヘタだなぁ」と思うコード その6
■ このスレッドは過去ログ倉庫に格納されています
0397デフォルトの名無しさん
2007/10/28(日) 03:23:16str1とstr2が等しければ0を返し
str1がstr2より大きければ正を返し
str1がstr2より小さければ負を返す
つまり、関数名通りに文字列を比較する関数と見た場合
比較した文字列が等しければ偽を返し、比較した文字列が等しくなければ真を返す関数である
故に、文字列が等しいことをテストしたければ、not演算子で真偽を逆転させるのが正しい比較となるが
それでは、おっちょこちょいが、文字列が等しくないことをテストするのだと勘違いする可能性があるため
#define StrEq(s1, s2) !strcmp(s1, s2)
とでも定義して、文字列が等しいことを調べているのだと主張する方がいいだろうと言うのがC FAQの趣旨だ
それを、
if (!strcmp(s1, s2)) {}
なんて事を書くのはおかしいと書くのがおかしいのでは無いのだろうか?
定数を左辺に置く以上に恥ずかしい発言だと思うのだが
■ このスレッドは過去ログ倉庫に格納されています