失敗するとゼロ、成功するとゼロ以外が返ってくる事がわかっている関数の返値で
(例えば文字列中にある文字が存在するか調べる関数)
失敗したかどうか条件判断を行いたい場合、比較とビット反転とどちらがスマートなんでしょうか?

int result = hoge(arg);
if (!result) cout << "ERROR" << endl; //ビット反転と
if (result == 0) cout << "ERROR" << endl; //比較