Loose-Info.com
Last Update 2021/10/23
TOP - 各種テスト - gcc - 警告関連のオプション - -Wsign-conversion

-Wsign-conversion
符号付き整数の符号なしへの代入で、符号の変更が生じる可能性のある暗黙の変換が生じる場合に警告

テスト概要

オプション無し、-Wsign-conversion、-Wconversionの各オプションを使用した際の警告出力例

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


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

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

使用ファイル


sample.c
#include <stdio.h> int main(void) { int n0 = -1; unsigned int n1 = 1; printf("n0 = %u : n1 = %u\n", n0, n1); /* 符号付きから符号なし整数型への代入 */ n1 = n0; printf("%u\n", n1); /* 符号付きから符号なし整数型への代入(型キャスト有) */ n1 = (unsigned int)n0; printf("%u\n", n1); return 0; }

動作テスト

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

-Wsign-conversionオプションを指定してコンパイルを実行
$ gcc -Wsign-conversion sample.c sample.c: In function ‘main’: sample.c:11:7: warning: conversion to ‘unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion] n1 = n0; ^~ $ intからunsigned intへの変換で符号変化の可能性についての警告

-Wconversionオプションを指定してコンパイルを実行
$ gcc -Wconversion sample.c sample.c: In function ‘main’: sample.c:11:7: warning: conversion to ‘unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion] n1 = n0; ^~ $ -Wsign-conversionオプションは-Wconversionでも有効となる