gcc の-Wconversion
警告では、char と short が暗黙的に int に変換されているようです。
#include<stdio.h>
#pragma GCC diagnostic warn "-Wconversion"
void main(void)
{
short i = 1;
short j = 1;
short k = j & ~i;
printf("value %d\n", j);
}
次の警告が表示されます。
test.c: In function 'main':
test.c:9:15: warning: conversion to 'short int' from 'int' may alter its value [-Wconversion]
short k = j & ~i;
^
短いキャストに戻すと警告short k = j & (short)~i;
が消えますが、変数の型が既に一致している場所にキャストを追加するのは少し奇妙です。
さらに調べた(unsigned short)~(unsigned short)0
結果、0xffff
. 結果
として~(unsigned short)0
0xffffffff
これらの警告に対処する良い方法を推奨できる人はいますか?
無効にする以外に-Wconversion
。