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

Rem*_*123 2 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);
}
Run Code Online (Sandbox Code Playgroud)

缓冲区属于void*

Zet*_*eta 7

类型转换的优先级低于[]运算符.您当前的代码与

if ((unsigned char*) (buffer[8]) == '1' && (unsigned char*) (buffer[9]) == '1')
/* note parentheses: ^         ^                            ^         ^      */
Run Code Online (Sandbox Code Playgroud)

你可能意味着

if (((unsigned char*) buffer)[8] == '1' && ((unsigned char*) buffer)[9] == '1')
/*  ^                       ^              ^                       ^         */
Run Code Online (Sandbox Code Playgroud)

代替.