2009-07-30 16 views
1

いくつかのコードを見ると、別のデベロッパーがtrueのすべてのインスタンスをfalseに変更したことがわかりました。 なぜそれをしますか? thxMS VC++ 6:trueではなくfalseを返すのはなぜですか?

+3

なぜ変更した男を聞きませんか? –

+1

*私はそれをしません。コードベース全体でこのようなことをすることはおそらくぶつかる行為です。 –

+0

私はそれが真実のすべてのインスタンスを変更していたと言います!falseはぶら下がりの攻撃でしょう –

答えて

9

何の正当な理由にはありませんtrueの代わりにfalseを書いてください。
悪意のある理由には、難読化(コードを読みにくくする)、個人的な嗜好、誤ったグローバル検索と置換、ブーリアン値を整数に変換する偽名が含まれる可能性があります。

Win32では、bool型ではなくint型のTRUEおよびFALSEの定義によっていくつかの混乱が引き起こされ、ブールステートメントで使用されると警告がトリガされる可能性があります。主にゼロ以外のものは「真」ですが、ブール値の代わりに整数を使用するときには必ず「真」が1であることを確認したい場合は、このような俗語が表示されることがあります。まだまだ良い理由ではありません;-)

+0

合意。彼はおそらく、TRUE/FALSEマクロを使用するときには!FALSEを使用するように言われましたが、適切なboolデータ型を使用する理由はありません。 – Roel

4

私は考えていないし、しばらくの間はC++を書いています。私は彼らが良い人ではなかった理由を何とか疑う。私は実際には知らないが、本当かもしれ

+0

+1悪い理由があります。人々に不信感を与えてくれるブーリアンについてはどうですか? –

+0

ブーリアンも間違えることがあります! – kenny

+0

@Steve:元々C言語では存在しなかったという事実。 –

0

が1でない(任意のもの> 0)とFALSE = 1がそう、彼は安全な場所になりますので、「偽のない」ゼロである

+0

残念ですが、データ型はC++のboolです。これらは真= 1か偽= 0です。 – Cokes

+0

私はBOOLEAN.B​​oolean変数(TRUEまたはFALSEである)と呼ばれるウィンドウにデータ型があることを覚えています。この型はWinNT.hで次のように宣言されています:typedef BYTE BOOLEAN; –

3

これは歴史的なものだと思います。 IIRCでは、一部のC/C++コンパイラで、コンパイラが実際にどのように表現するために使用するかを知ることに問題がありました。あなたはfalseがゼロであることを知ることができます!falseは、現在のABIが真であるものとなります。

これは一般的には重複していますが、便利なケースがいくつかありますが、私は考えられません。

1

多分、彼は彼のコードの中で非常に多くの真と偽持って、彼は簡単にそれを逆にしたかった、彼はちょうど彼の編集者の検索を使用して置き換えることができ、

3

かのラインが

#define true false

それが必要な場合があります

はちょうどは、ヘッダーのどこかにあることをが起こった:)

+1

+1はそれを愛しています。 – kenny

+1

それを書いている人なら誰でも良い殴打を与えられるべきです! – KTC

関連する問題