使用 gcc 的-Wconversion
警告,看起来 chars 和 shorts 被隐式转换为 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
.