c警告消息:非零整数转换为指针

时间:2013-10-16 09:56:22

标签: c pointers

我有以下代码,并且在if语句中由编译器收到“非零整数转换为指针”警告。

我尝试了多种组合来删除警告,包括用双引号包裹我的条件的右侧,例如。 “1”,这使警告消失,但那时情况不起作用。

if ((unsigned char*)buffer[8] == '1' && (unsigned char*)buffer[9] == '1')
{
      unsigned char colorPtr = (unsigned char*)&buffer[10];
      singleColor(CDCInstance, lightCount, colorPtr, 6);
}

缓冲区的类型为void *

1 个答案:

答案 0 :(得分:7)

类型转换比[]运算符低precedence。您当前的代码与

相同
if ((unsigned char*) (buffer[8]) == '1' && (unsigned char*) (buffer[9]) == '1')
/* note parentheses: ^         ^                            ^         ^      */

你可能意味着

if (((unsigned char*) buffer)[8] == '1' && ((unsigned char*) buffer)[9] == '1')
/*  ^                       ^              ^                       ^         */

代替。