首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么用C写1,000,000,000为1000*1000*1000?

为什么用C写1,000,000,000为1000*1000*1000?
EN

Stack Overflow用户
提问于 2016-11-16 21:12:47
回答 5查看 14.5K关注 0票数 143

在Apple创建的代码中,有这样一行:

代码语言:javascript
复制
CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 )

有理由将1,000,000,000表达为1000*1000*1000

为什么不使用1000^3呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-11-16 21:21:56

以乘法方式声明常量的一个原因是提高可读性,同时不影响运行时性能。此外,还表明作者对数字的思考是乘法的。

请考虑以下内容:

代码语言:javascript
复制
double memoryBytes = 1024 * 1024 * 1024;

它显然比:

代码语言:javascript
复制
double memoryBytes = 1073741824;

因为后者乍一看并不是1024的第三次幂。

正如Amin Negm-Awad提到的,^运算符是二元XOR。许多语言缺少内置的编译时求幂运算符,因此需要乘法运算。

票数 203
EN

Stack Overflow用户

发布于 2016-11-16 21:23:52

为了可读性。

将逗号和空格放在零(1 000 000 0001,000,000,000)之间会产生语法错误,并且在代码中使用1000000000会很难看到到底有多少个零。

1000*1000*1000清楚地表明它是10^9,因为我们的眼睛可以更容易地处理块。而且,没有运行时开销,因为编译器会用常量1000000000替换它。

票数 51
EN

Stack Overflow用户

发布于 2016-11-16 21:19:32

阅读和获取与1,000,000,000表单的一些关联可能会更简单。

从技术角度看,我猜直接数和乘法没有区别。无论如何,编译器都会将其生成为常量十亿数字。

如果您谈到objective-c,那么1000^3将无法工作,因为没有这样pow语法(它是xor)。相反,可以使用pow()函数。但在这种情况下,它将不是最优的,它将是一个运行时函数调用,而不是编译器生成的常量。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40633059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档