gpt4 book ai didi

C 工作面试 - 类型转换和比较

转载 作者:太空狗 更新时间:2023-10-29 16:17:08 25 4
gpt4 key购买 nike

我遇到了一个棘手的 (IMO) 问题。我需要比较两个 MAC addresses , 以最有效的方式。

那一刻我唯一想到的是微不足道的解决方案 - for 循环和比较位置,我照做了,但面试官的目标是选角。

MAC 定义:

typedef struct macA {
char data[6];
} MAC;

功能是(我被要求实现的那个):

int isEqual(MAC* addr1, MAC* addr2)
{
int i;

for(i = 0; i<6; i++)
{
if(addr1->data[i] != addr2->data[i])
return 0;
}
return 1;
}

但如前所述,他的目标是选角。

意思是,以某种方式将给定的 MAC 地址转换为 int,比较两个地址,然后返回。

但是在转换时,int int_addr1 = (int)addr1;,只会转换四个字节,对吗?我应该检查其余的吗?意思是位置 4 和 5?

charint 都是整数类型,所以转换是合法的,但是会发生什么在描述的情况下?

最佳答案

如果他真的对这种方法不满意(这本质上是一个脑放屁,因为你不是在比较兆字节或千兆字节的数据,所以在这种情况下,人们真的不必担心“效率”和“速度” ), 告诉他你相信标准库的质量和速度:

int isEqual(MAC* addr1, MAC* addr2)
{
return memcmp(&addr1->data, &addr2->data, sizeof(addr1->data)) == 0;
}

关于C 工作面试 - 类型转换和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com