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

CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 )

有什么理由把1,000,000,000表示为1000*1000*1000吗?

为什么不是1000^3块呢?

推荐答案

以乘法方式声明常量的一个原因是为了提高可读性,同时不影响运行时性能.

请考虑以下内容:

double memoryBytes = 1024 * 1024 * 1024;

这显然比:

double memoryBytes = 1073741824;

因为后者乍一看并不是1024的三次方.

正如Amin Negm Awad提到的,^运算符是二进制XOR.许多语言缺少内置的编译时求幂运算符,因此没有乘法.

C++相关问答推荐

如何避免使用相对路径包含在c中

自定义malloc实现上奇怪的操作系统依赖行为

当多个线程在C中写入相同的文件描述符时,如何防止争用情况?

正在try 将文件/文件夹名从目录 struct 存储到链接列表

如何在C中通过套接字自定义数据类型读取原始变量?

struct 上的OpenMP缩减

在C23中使用_GENERIC实现带有右值的IS_POINTER(P)?

Char变量如何在不使用方括号或花括号的情况下存储字符串,以及它如何迭代到下一个字符?

将数据移动到寄存器时出现分段故障

在CLANG中调试预处理器宏

函数的限制限定指针参数允许优化调用方函数吗?

如何计算打印二叉搜索树时每行所需的空间?

无法在OpenGL上绘制三角形

Linux/C:带有子进程的进程在添加waitid后都挂起

用C++初始化局部数组变量

Tcl_GetDoubleFromObj在列表的迭代中是一个缺点

x86-64平台上的int_fast8_t大小与int_fast16_t大小

无法将字符串文字分配给 C 中的字符数组

快速准确计算double的小数指数

使用 SDL2 的 C 程序中的内存泄漏