int num4[10] = {3,4,8,9};
int num2[10] = {3,8,6,8};

compare2 = memcmp(num4, num2, 4);

为什么即使数组不相等,compare2的值也是零?

最佳答案

memcmp的第三个参数是字节数,而不是元素数。
你的意思是:

memcmp(num4, num2, 4 * sizeof num4[0]);

您现有的代码只比较前四个字节。如果系统有4字节的int(这是常见的),则只比较第一个int。
我使用了sizeof num4[0]而不是sizeof(int),这样即使以后将num4num2更改为不同类型的数组,代码仍然可以工作。

10-04 12:24