gpt4 book ai didi

c++ - 是否保证 intptr_t 通过 uintptr_t 安全往返?

转载 作者:行者123 更新时间:2023-12-01 14:39:34 25 4
gpt4 key购买 nike

我可以拿一个 intptr_t并将其分配或 memcpy 到 uintptr_t并再次返回并保证以相同的值结束?

也就是说,以下任何一项都可以保证工作(无断言):

使用赋值:

intptr_t i1 = f();
uintptr_t u = i1;
intptr_t i2 = u;
assert(i1 == i2);

使用 memcpy :
intptr_t i1 = f();
uintptr_t u;
memcpy(&u, &i1, sizeof(u));
memcpy(&i2, &u, sizeof(u));
assert(i1 == i2);

如果标准不保证,则可以在编译或运行时检查条件以确定它是否在特定平台上得到保证。

最佳答案

memcpy保证工作,因为它将值视为字节序列。该分配不能保证工作,但通常可以在任何使用 2s 补码整数的机器上工作。使用 1s 补码或符号幅度的机器会将 -0 的值更改为 0,尽管断言仍然可以,因为 -0 == 0 为真。

关于c++ - 是否保证 intptr_t 通过 uintptr_t 安全往返?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61283555/

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