#include <stdio.h>
#include <string.h>
int main()
{
int test1 = 8410092; // 0x8053EC
int test2 = 8404974; // 0x803FEE
char *t1 = ( char*) &test1;
char *t2 = (char*) &test2;
int ret2 = memcmp(t1,t2,4);
printf("%d",ret2);
}
Run Code Online (Sandbox Code Playgroud)
这是一个非常基本的功能,当运行打印-2时.也许我完全误解了memcmp,但我想如果它返回第一个不同字节之间的差异.由于test1的数量大于test2,因此打印值不应为正数吗?
我正在为ubuntu使用标准的gcc.7编译器.
小智 5
正如评论中指出的,memcmp()运行字节比较.这是一个男人的引用
int memcmp(const void*s1,const void*s2,size_t n);
返回值:如果发现s1的前n个字节分别小于,匹配或大于前n个字节,则memcmp()函数返回小于,等于或大于零的整数. s2对于非零返回值,符号由s1和s2中不同的第一对字节(解释为unsigned char)之间的差异符号确定.如果n为零,则返回值为零. http://man7.org/linux/man-pages/man3/memcmp.3.html
如果字节不相同,则差异的符号取决于目标字节序.
一个应用程序memcmp()是测试两个大型数组是否相同,这可能比编写逐个元素比较运行的循环更快.有关更多详细信息,请参阅此堆栈问题.为什么memcmp比for循环检查快得多?
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |