gpt4 book ai didi

c++ - 这个 C++ 构造是做什么的?

转载 作者:太空狗 更新时间:2023-10-29 23:38:02 24 4
gpt4 key购买 nike

在代码行的某处,我遇到了这个结构......

//void* v = void* value from an iterator
int i = (int)(long(v))

这个结构可能有什么用途?

为什么不直接使用 int(v) 呢?为什么要先转换为 long

最佳答案

它很可能会消除警告。

假设一个 32 位架构 sizeof(int) < sizeof(long) 和 sizeof(long) == sizeof(void *) 如果你将 void * 转换为 int 可能会收到警告,如果你转换为 int 则不会收到警告void * 到 long 只要你不截断。然后您会收到一条警告,将 long 分配给 int(可能被截断),然后从 long 显式转换为 int 时删除该警告。

在不了解编译器的情况下很难说,但我确实看到过防止警告所需的多步转换。为什么不尝试将结构转换为您认为应该的结构,然后看看编译器说了什么(当然,如果您使用相同的编译器和相同的警告级别,那只会帮助您弄清楚原始程序员的想法就像他们一样)。

关于c++ - 这个 C++ 构造是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2751670/

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