1. ホーム
  2. c

[解決済み] 1=偽、0=真?

2022-02-12 20:27:02

質問内容

仕事で、c API の is_equals() 関数が、等しくない sql テーブルには 1 を返し(false)、等しいものには 0 を返すことに遭遇しました(true)。私は、自分のコードでテストケースを実行した後、それに気づいたのです。APIに含まれるコードは、その出力がドキュメントに正しく記録されていたので、バグがあるわけではありません。

私の質問 - この論理的なNOTが正常である逆さまの世界/平行宇宙/コーディング言語が存在するのでしょうか?1は通常、真実ではないのでしょうか?APIのコーダーがエラーを起こしているのでしょうか?

解決方法は?

比較関数が 0 の場合は負の数、quot;less than の場合は正の数を返すようにします。 strcmp()memcmp() はこのように動作します。

しかし、0が偽で0以外が真であることは、C言語のフロー制御と論理ブーリアン演算子がそうであるため、慣用的なことである。 ですから、この関数に選ばれた戻り値は問題ないのかもしれませんが、それはこの関数の 名前 という名前にすべきでした。 compare() など)。