【发布时间】:2014-02-24 09:43:57
【问题描述】:
我正在尝试重写以下代码:
$ cat t.c
int main()
{
unsigned int i = 0;
int v = 3;
i |= v;
return 0;
}
使用最近的 gcc,您应该会收到以下警告:
$ gcc -Wconversion t.c
t.c: In function ‘main’:
t.c:5:3: warning: conversion to ‘unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion]
我应该如何重写按位 OR 以避免此警告,同时保持代码可读性。 unsigned int i 是库代码中很深的东西,所以我无法将其更改为 int。
【问题讨论】:
-
我认为如果在库中所有代码都使用
int,你也应该使用int i而不是uint i,并且代码的用户需要检查这是否是一个问题 -
你能改一下
int v吗?
标签: c bitwise-or