在Apple创建的代码中,有这样一行:
CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 )
有理由将1,000,000,000
表达为1000*1000*1000
吗
为什么不使用1000^3
呢?
发布于 2016-11-16 21:21:56
以乘法方式声明常量的一个原因是提高可读性,同时不影响运行时性能。此外,还表明作者对数字的思考是乘法的。
请考虑以下内容:
double memoryBytes = 1024 * 1024 * 1024;
它显然比:
double memoryBytes = 1073741824;
因为后者乍一看并不是1024的第三次幂。
正如Amin Negm-Awad提到的,^
运算符是二元XOR
。许多语言缺少内置的编译时求幂运算符,因此需要乘法运算。
发布于 2016-11-16 21:23:52
为了可读性。
将逗号和空格放在零(1 000 000 000
或1,000,000,000
)之间会产生语法错误,并且在代码中使用1000000000
会很难看到到底有多少个零。
1000*1000*1000
清楚地表明它是10^9,因为我们的眼睛可以更容易地处理块。而且,没有运行时开销,因为编译器会用常量1000000000
替换它。
发布于 2016-11-16 21:19:32
阅读和获取与1,000,000,000
表单的一些关联可能会更简单。
从技术角度看,我猜直接数和乘法没有区别。无论如何,编译器都会将其生成为常量十亿数字。
如果您谈到objective-c,那么1000^3
将无法工作,因为没有这样pow语法(它是xor)。相反,可以使用pow()
函数。但在这种情况下,它将不是最优的,它将是一个运行时函数调用,而不是编译器生成的常量。
https://stackoverflow.com/questions/40633059
复制相似问题