Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在阅读有关以下代码行的电子邮件参数:
p = (unsigned char)random();
random 函数返回一个 long,有人说这是不安全的,因为类型转换可能会采用 MSB 而不是 LSB。我知道在 x86 上,类型转换会返回 LSB,但我找不到任何关于这是否是 ANSI C 实际要求的信息,或者它是否是那些特定于实现的“未定义行为”之一。
这是在 C 标准中指定的。
6.3.1.3p2 中的 C99 说:
“否则,如果新类型是无符号的,则在新类型可以表示的最大值的基础上反复加减一,直到该值在新类型的范围内。”
在二进制补码系统上,这意味着取最低有效位。