gpt4 book ai didi

c - 如果类型与左侧操作数匹配,为什么要显式转换右侧指针操作数?

转载 作者:行者123 更新时间:2023-12-04 11:39:11 35 4
gpt4 key购买 nike

关于 C 编程,我在示例代码中看到了几种情况,其中指针赋值涉及右侧操作数的显式转换,即使它已经与左侧操作数的类型相匹配。举个例子:

void memcpy(u8int *dest, const u8int *src, u32int len)
{
const u8int *sp = (const u8int *)src;
u8int *dp = (u8int *)dest;
for(; len != 0; len--) *dp++ = *sp++;
}

当然,该函数也在头文件中正确声明为:

void memcpy(u8int * dest, const u8int * src, u32int len);

该函数已经将变量“src”定义为“const u8int *”类型,那么为什么在分配给同样为“const u8int *”类型的“sp”时还要进行显式转换?将“dest”赋值给“dp”也是如此。

最佳答案

如果你正在寻找一个神奇的神秘理由来做这件事,你会失望的。这种类型的显式类型转换毫无意义。

这是程序员的风格决定(IMO 是一个糟糕的决定)。类型转换有潜在的危险(通过“掩盖”重要警告)并使代码更难阅读……它应该保留在需要它的情况下。这不是其中之一。

关于c - 如果类型与左侧操作数匹配,为什么要显式转换右侧指针操作数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464136/

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