来自文字 Splint 的 C 字符警告不兼容的类型

C Character from literal Splint warns of incompatible types

我有一个程序使用无符号字符来表示小范围的整数。我发现自己需要在程序的几个不同部分将它们清除为 0,我最近也开始使用夹板,显然:

unsigned char c = 0;

给出警告:

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

由于文字字符没有后缀,如何最好地解决这个问题?我想我有几个选择:

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);

splint 有一个选项 +charint,它将 char int 视为可互换的。

您可以忽略警告并使用

unsigned char = 0;

在许多情况下,为了节省内存而不是使用 int 进行整数运算,这显然比 char 消耗更多内存,人们确实使用 unsigned char.

unsigned char i = 10;
unsigned char j = 1;
unsigned char k = i +j;
printf("%d",k);