gpt4 book ai didi

c++ - 将 void* 与 uint16_t 进行比较

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:10 25 4
gpt4 key购买 nike

在一些遗留代码中,在 GCC 4.6 上编译良好(使用 -fpermissive),我有这个:

uint16_t a = 0;
void* b = ...;

if(b == a) // ...

这种比较在 GCC 4.6 上是否定义明确?它是向下转换为 16 位还是向上转换为 32/64 位?

最佳答案

看起来它向上转换 16 位整数以匹配指针大小。运行以下代码输出 "upcast"

uint16_t a = 1;
void* b = (void*)0x10001;
(b == a) ? printf("downcast") : printf("upcast");

关于c++ - 将 void* 与 uint16_t 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863470/

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