gpt4 book ai didi

c++ - 科学记数法对于 C 中的整数常量是否安全?

转载 作者:IT老高 更新时间:2023-10-28 12:39:20 29 4
gpt4 key购买 nike

一段时间以来,我一直在用科学计数法表示常数的 10 的大幂,这样我就不必数零了。例如

#define DELAY_USEC 1e6

一位同事指出这是不安全的,因为它不是整数,也不能保证总是等于 1000000准确。文档似乎证实了这一点,但我想知道它是否真的实用。有没有办法使用速记安全地声明一个十次方整数?将其转换为定义中的 int 是否安全?

最佳答案

理论上,不会。两种语言都没有指定如何表示浮点值,或者可以精确表示哪些值。 (更新:显然,C11 确实推荐了一种表示形式。C++ 和较旧的 C 方言不推荐)。

实际上,是的,对于相当大范围的值。您可能会遇到的任何实现都将使用 64-bit IEEE representation对于 double。这可以精确地表示最大为 253(大约 9x1015)的任何整数值。它当然可以表示任何可以用 32 位整数类型表示的东西。

关于c++ - 科学记数法对于 C 中的整数常量是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24389678/

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