-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 に答える