1. ホーム
  2. c++

intをboolに変換するときに!を使うのはなぜですか?

2023-08-16 07:20:56

質問

このように整数をブーリアンに変換する理由は何でしょうか?

bool booleanValue = !!integerValue;

ではなく、単に

bool booleanValue = integerValue;

私が知っているのは、VC++7 では、後者が C4800 警告 が発生し、前者は発生しないことです。他に何か違いがあるのでしょうか?

どのように解決するのですか?

"!"イディオムの問題点は、簡潔であること、見にくいこと、タイプミスと間違えやすいこと、"!の1つを落としやすいこと、などなどです。 私はこれを「C/C++でどれだけかわいくなれるか見てみよう」というカテゴリに入れました。



ただ、書くだけ bool isNonZero = (integerValue != 0); ...はっきりさせましょう。