2

unsigned chars を使用して小さな範囲の整数を表すプログラムがあります。プログラムのいくつかの異なる部分でそれらを0にクリアする必要があることに気づきました。最近、スプリントの使用も開始しました。

unsigned char c = 0;

警告を与えます:

Variable c initialized to type int, expects unsigned char: 0
  Types are incompatible.

リテラル char にはサフィックスがないため、これをどのように解決するのが最善ですか? いくつかのオプションがあると思います:

1: 警告を無視します。

2: 毎回キャスト:

unsigned char c = (unsigned char)0;

3: コードの長さを削減するために var を作成します。

unsigned char uc_0 = (unsigned char)0; 
unsigned char c = uc_0;

4: 機能:

static inline unsigned char uchar(int in)
{
   return (unsigned char)in;
}
unsigned char c = uchar(0);
4

2 に答える 2

2

splint交換可能として+charint扱うオプションがあります。char int

于 2015-01-12T14:06:08.310 に答える
0

警告を無視して使用できます

unsigned char = 0;

多くの場合、使用する代わりにメモリを節約するために整数演算がある場合、これはintchar の人々が使用するよりも明らかに余分なメモリを消費しますunsigned char

unsigned char i = 10;
unsigned char j = 1;
unsigned char k = i +j;
printf("%d",k);
于 2015-01-12T14:24:06.360 に答える