Loose-Info.com
Last Update 2021/11/02
TOP - 各種テスト - gcc - 警告関連のオプション - -Wlogical-op

-Wlogical-op
論理演算子の使用で誤りが疑われる場合警告を出力

テスト概要

オプション無し、および-Wlogical-opオプションを使用した際の警告出力例

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

使用ファイル


sample.c
#include <stdio.h> int main(void) { int a = 7; /* 論理演算子の真偽値ではない定数への適用 */ if (a && 4) { puts("sample1\n"); } /* 論理演算子の左右が同じオペランド(1) */ if ((a - 1) && (a - 1)) { puts("sample2\n"); } /* 論理演算子の左右が同じオペランド(2) */ if ((a < 1) || (a < 1)) { puts("sample3\n"); } return 0; }

動作テスト

オプション無しでコンパイルを実行
$ gcc sample.c 警告無し $

-Wlogical-opオプション使用してコンパイルを実行
$ gcc -Wlogical-op sample.c sample.c: In function ‘main’: sample.c:8:8: warning: logical ‘and’ applied to non-boolean constant [-Wlogical-op] if (a && 4) ^~ sample.c:14:14: warning: logical ‘and’ of equal expressions [-Wlogical-op] if ((a - 1) && (a - 1)) ^~ sample.c:20:14: warning: logical ‘or’ of equal expressions [-Wlogical-op] if ((a < 1) || (a < 1)) ^~ $ 論理演算子の、真偽値ではない定数や左右同じオペランドへの適用に関する警告