1
gcc的-Wconversion
警告,它看起來像字符和短褲被隱式轉換爲整數。short/char上的'〜'運算符隱式轉換爲int(C/gcc)
#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
。
「但是如果在類型已經匹配的地方添加了演員,這有點奇怪。」 - 他們不匹配。正如您所說的那樣,在執行操作之前,這些值會隱式轉換爲int(如標準所要求的那樣),並且此時類型不再匹配。由於類型不匹配,我沒有看到你已經找到的解決方案的問題(添加一個演員)。 – hvd
編輯問題,注意**變量**類型已經匹配。顯然應用操作員後他們不。 – ideasman42
請注意,您可以施放以安靜警告,並且我檢查了'gcc'至少不會在有/沒有演員時更改彙編器輸出。 – ideasman42