我想知道一种比较数组值的更好方法,这与我正在做的事情有所不同。
对于如下代码,是否可以使用case语句?
uint8_t array[8];
if (array[4] == '1' && array[5] == '2' && array[6] == 'b' && array[7] == 'c')
{
//do something
}
答案 0 :(得分:5)
首先,您需要使用逻辑AND运算符&&
,而不是按位AND运算符&
。
其次,您可以使用std::memcmp
而不是if
语句中的四个逻辑表达式。
if ( std::memcmp(array + 4, "12bc", 4) == 0 )
答案 1 :(得分:3)
对于多样性,这是另一个......
create()
答案 2 :(得分:1)
简而言之:if ( !memcmp( array + 4, "12bc", 4 ) )
。不要认为strncmp
更好,因为:
1)array
属uint8_t
而非char
;
2)只比较4个字节,没有空终止,即没有字符串比较。