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