gpt4 book ai didi

c - 将每年的秒数定义为 C 中的宏?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:24 24 4
gpt4 key购买 nike

在 MCQ 考试中,有两个选择:
#define SEC (60*60*24*365) 或者
#define SEC (60*60*24*365UL)
两种可能性之间是否存在差异,从而使一种成为更好的选择?

最佳答案

常量 6024365 都具有 int 类型,因此可以将这些值相乘也是那种类型的。不过,int 中可表示的最大值允许低至 32767 - 因此完整的乘法可能会溢出。

但是,即使使用 365UL 的版本也不安全。因为乘法是从左到右关联的,所以第一次乘法是 60 * 60(可以),然后乘以 24。这个数学结果是 86400,可能已经溢出了 int

一个安全的选择是:

#define SEC (60*60*24L*365)

但是将所有类型的常量设为 long 是最清楚的:

#define SEC (60L*60L*24L*365L)

(这个公式在闰年和闰秒的年份也是错误的)。

关于c - 将每年的秒数定义为 C 中的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18007296/

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