-1

我正在尝试重写以下代码:

$ 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。

4

1 回答 1

6

您不应该 unsigned更改,而是更改它。按位运算总是最好对unsigned变量执行。

制作v unsigned

于 2014-02-24T09:49:14.910 回答