gpt4 book ai didi

c - NDK-将负双数转换为 uint32_t 得到零

转载 作者:行者123 更新时间:2023-11-30 15:21:10 30 4
gpt4 key购买 nike

示例代码是这样的。

{
uint32_t x;
double y;
y = -1; // any negative number;
x = (uint32_t)(y);
print_log("%u", x);// here, x will be outputed, and it's 0;
}

为什么x会是0?

我在linux-gcc中运行相同的代码,结果不同。

最佳答案

double-1.0 超出了 uint32_t 的范围。

将有符号或无符号整数值转换为无符号整数类型具有明确定义的行为。结果被包装到目标类型的范围(减少模 MAX+1,其中 MAX 是目标类型的最大值)。

将超出范围的浮点值转换为整数类型具有未定义的行为。不同系统的结果有所不同,这并不奇怪。原则上,它甚至可能使你的程序崩溃。

一旦您决定在输入 -1.0 的情况下想要什么结果,您就可以弄清楚如何在没有未定义行为的情况下生成该结果。

关于c - NDK-将负双数转换为 uint32_t 得到零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652111/

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