gpt4 book ai didi

c - ANSI C 是否实际指定在类型转换为较小整数时使用哪些字节?

转载 作者:太空狗 更新时间:2023-10-29 15:00:48 27 4
gpt4 key购买 nike

我正在阅读有关以下代码行的电子邮件参数:

p = (unsigned char)random();

random 函数返回一个 long,有人说这是不安全的,因为类型转换可能采用 MSB 而不是 LSB。我知道在 x86 上,类型转换会返回 LSB,但我找不到任何信息来说明这是否实际上是 ANSI C 强制要求的,或者它是否是那些特定于实现的“未定义行为”之一。

最佳答案

这是在 C 标准中指定的。

6.3.1.3p2 中的 C99 说:

"Otherwise, if the new type is unsigned, the value is converted by repeatedly adding or subtracting one more than the maximum value that can be represented in the new type until the value is in the range of the new type."

在二进制补码系统中,这意味着取最低有效位。

关于c - ANSI C 是否实际指定在类型转换为较小整数时使用哪些字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18092448/

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