C++で比較演算子を使用する場合、boolはint型に変換されますか?比較中にC++のboolはintに変換されますか?
私が尋ねる理由は、常に明示的に比較するか否かの質問がで真/偽の文があれば、思いついたということです。 2つのオプションがあること:
1) if (my_bool == true) doSomething();
2) if (my_bool) doSomething();
私たちは、あなたが、一般的に次の理由の明示的な比較(1)を避ける必要があります考えていた:あなたが作業する必要がある場合は、上記のコードのような
int myFunc(){return 4;}
if (myFunc() == true) doSomething();
何かが出てくるでしょう真であることを示すためにゼロ以外の値を返しているCインタフェースがあります。 myFunc
戻り4、true
が1にmacro'd、及び4 == 1
が真ではないので、myFunc()
例はCで失敗します。
は、これはまだC++での場合ですか? "equal to"演算子は、boolをintに変換するのではなく、逆に変換しますか?標準への参照(C++ 11は私が扱っていることです)は高く評価されますが、言語のバージョンによって異なる場合は、知りたいと思うでしょう。
(私は明示的な真/偽比較の長所/短所について、具体的お尋ねしたいのですが、それは主観的な可能性のようなものがそうです。)
'if(myBool == true)'が 'if(myBool)'よりも優れていると仮定すると、明らかに 'if((myBool == true)== true)'がさらに優れています。 – MSalters