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

时间:2015-01-12 14:03:35

标签: c casting magic-numbers splint

我有一个程序使用无符号字符来表示小范围的整数。我发现自己需要在程序的几个不同部分将它们清除为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);

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以忽略警告并使用

unsigned char = 0;

在许多情况下,当存在整数运算以节省内存而不是使用int时,显然会消耗额外的内存而不是char,人们会使用unsigned char

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