Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;memcmp使用无符号字符数组失败?_C++_Memcmp - Fatal编程技术网

C++ C++;memcmp使用无符号字符数组失败?

C++ C++;memcmp使用无符号字符数组失败?,c++,memcmp,C++,Memcmp,我在使用memcmp时可能遇到了一个小问题。我有两个数组(长度=3字节),数据完全相同 如果我试着将它们与memcmp进行比较,它失败了 if (memcmp(ucbuffer, ucnewbuffer, buffer.sDeviceData.sLenght)) { cout << "val written, val ok!\n"; }; 如果我手动比较两个数组,结果会完全相同 你知道吗 祝您晚上愉快。当缓冲区比较相等时,该函数返回零(即,不为true)。发布所有代码,而不

我在使用memcmp时可能遇到了一个小问题。我有两个数组(长度=3字节),数据完全相同

如果我试着将它们与memcmp进行比较,它失败了

if (memcmp(ucbuffer, ucnewbuffer, buffer.sDeviceData.sLenght)) {
    cout << "val written, val ok!\n";
};
如果我手动比较两个数组,结果会完全相同

你知道吗


祝您晚上愉快。

当缓冲区比较相等时,该函数返回零(即,不为true)。

发布所有代码,而不仅仅是片段。我认为true=0,false-1所以检查0意味着true?!陛下如果你是对的,我的代码也不适用。在这种情况下检查0意味着比较是相等的,0是传统的错误思维。C或C++引用应该告诉你错误是零,真是一个(加上所有其他非零值)。函数在成功时返回零是很常见的,在这种情况下,非零结果有时会指示错误代码。也许你在想这个,把它和现在的情况混淆了。但是
memcpy
没有失败结果。即使缓冲区不相等,函数仍能成功地告诉您结果。如果有助于记忆,
memcpy
返回的方式与
strcpy
相同;结果的符号告诉你哪个参数应该排在另一个参数之前。是的,我来自E,VisualBasic的角是-1为假,而>=0为真。这可能会让我想到,0是真的,即使在VisualBasic中,False也是零。没错,那是-1。
calloc(buffer.sDeviceData.sLenght, sizeof(unsigned char);