Last Update 2021/10/01
-Wbool-operation
ブール値の式での疑わしい演算に対する警告
テスト概要
オプション無し、-Wbool-operation、-Wallの各オプションを使用した際の警告出力例
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
使用ファイル
sample.c
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool bSamp1 = true;
bool bSamp2 = false;
/* bool値のインクリメント*/
bSamp1++;
/* bool値のビット単位の否定演算 */
bSamp2 = ~bSamp2;
printf("%d %d %d\n", bSamp1, bSamp2, ~0);
return 0;
}
動作テスト
オプション無しでコンパイルを実行
$ gcc sample.c エラー・警告無し
$
-Wbool-operationオプションを指定してコンパイルを実行
$ gcc -Wbool-operation sample.c
sample.c: In function ‘main’:
sample.c:10:8: warning: increment of a boolean expression [-Wbool-operation]
bSamp1++;
^~
sample.c:13:11: warning: ‘~’ on a boolean expression [-Wbool-operation]
bSamp2 = ~bSamp2;
^
sample.c:13:11: note: did you mean to use logical not?
bSamp2 = ~bSamp2;
^
!
$ ブール値のインクリメントや「~」演算子の使用に対する警告
-Wallオプションを指定してコンパイルを実行
$ gcc -Wall sample.c
sample.c: In function ‘main’:
sample.c:10:8: warning: increment of a boolean expression [-Wbool-operation]
bSamp1++;
^~
sample.c:13:11: warning: ‘~’ on a boolean expression [-Wbool-operation]
bSamp2 = ~bSamp2;
^
sample.c:13:11: note: did you mean to use logical not?
bSamp2 = ~bSamp2;
^
!
$ -Wbool-operationオプションは-Wallでも有効となる