プロが教えるわが家の防犯対策術!

C言語でプログラムしていますがコンパイルすると以下のメッセージが出ます
func03.c:5023: warning: logical '&&' with non-zero constant will always evaluate as true
このメッセージは初めてみたのですがこれが出る原因はどのようなことが考えられますか

A 回答 (1件)

warning: logical '&&' with non-zero constant will always evaluate as true


コンパイラ「非ゼロの定数が論理演算子&&と共に使われているけどさー、常にtrueになるんだったら無駄じゃね?文法的には間違ってないからコンパイルは当然通してあげるけど、なーんかそこら辺の無駄が気になるんだよね

if (i == 5 && true){
f(i);
}

って結局

if (i == 5){
f(i);
}

で十分じゃね?C言語は、0になるものは偽,それ以外は真として扱うが、そういうものが置かれているぜ。

if((i == 5) && 1){
f(i);
}
みたいなやつ。」
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

あれからさらに調査してみましたが変数と比較している#defineで定義したマクロ定数の値が原因でした
ただし、必要なマクロだったのでこのままにしようと思います

お礼日時:2016/12/01 21:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!