如何正确比较两个无符号字符?
展望比较两个如何正确比较两个无符号字符?
BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
从
IP_ADAPTER_ADDRESSES Structure
这里字节是Windows定义为typedef unsigned char BYTE;
我需要比较记忆
?
谢谢!
利玛窦打我给它。他的回答是正确的。不幸的是,我不能直接对他的帖子发表评论(我可能太新了),但我想确认他的回应,因为迄今为止的大多数答案都是不正确的。
问题中的数据类型是一个字节数组。
不要使用等号运算符(==)来比较两个数组的值,如果您将相同的数组与自己的进行比较,它只会计算为真。即使字节数组的每个元素具有相同的值,但是它们是不同的数组(因此它们驻留在内存中的不同位置),等于运算符将返回false。
实质上,数组只是内存中的一个指针。这里有两种方法来声明数组:
int * pointer = new int[5];
或:
int array[] = new int[5];
您可以访问的第一个元素之一:
*pointer = 100; // Dereference the pointer to get the int at that location
或:
你甚至可以这样做:
*array = 100;
或:
pointer[0] = 100;
这应该证明的“数组”仅仅是一个指针,指向邻接存储器的块的第一个元素。因此,当使用等号运算符将两个数组与彼此进行比较时,这与将两个指针与彼此进行比较是相同的。要重新说明主要观点,如果数组不在同一个空间内,指针指向不同的地方,因此至少在等式运算符方面不是“相等的”。
我希望这是适合您的技能水平的适当信息:)如果不是,也许它会帮助其他人。另外,自从我有使用C++的乐趣以来,这已经有一段时间了,所以希望一切都是正确的。
是的,这是有道理的。那么它是比较这种情况下的地址? – 2011-05-05 00:25:51
如果您要使用等号运算符(==)比较两个数组,您只需比较它们的地址,是的。数组只是指针周围的简便语法,指针的值指向内存中的地址,并使用“==”比较值。 :) – arichards 2011-05-05 00:46:33
数组**不是指针**。它们是完全独立的类型,语义非常不同。然而,数组的“名称”在C中的大多数上下文中“衰减”为指向它的第一个元素的指针。 – 2011-05-05 04:08:23
比较?只需使用普通的平等和/或关系比较运算符。这种方法有什么问题吗?你为什么突然想要比较内存?
看到arichards回答... – 2011-05-05 00:22:03
@Tommy:这个问题明确指出你想比较两个无符号的字符。然后,事实证明,你想比较两个数组。当你真的想要比较两个数组时,你为什么要比较两个无符号字符? – AnT 2011-05-05 00:34:46
小心:的PhysicalAddress
的定义,如文档中说明的那样,是
BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
即它是一个阵列的小号。不过,你可以很容易地从memcmp
<string.h>
(或<cstring>
如果您正在使用C++)对它们进行比较:
// The two structures
IP_ADAPTER_ADDRESSES iaa1, iaa2;
// The result of the comparison
int result;
//...
if(iaa1.PhysicalAddressLength!=iaa2.PhysicalAddressLength)
{
// We have two physical addresses of two different lengths; depending on what
// you want to do it may be an error or just a simpler case of comparison
}
else
{
// Perform the comparison
result = memcmp(iaa1.PhysicalAddress, iaa2.PhysicalAddress, iaa1.PhysicalAddressLength);
}
Soudns不错,我不赶上大小检查评论“这可能是一个错误或只是一个比较简单的情况下”....你可以扩大这个请..谢谢你 – 2011-05-05 00:20:52
根据你的目标编码不同长度地址的比较可能没有意义(因为您正在比较不同类型的地址),或者可能是优化(如果其中一个较短,则不必比较其内容,但您已经知道它们不同) 。 – 2011-05-05 05:34:45
对象存储在内存中。无论你比较哪种方式,你都会比较内存:) – pmg 2011-05-04 23:25:01