-3

假设我在下面列出了两个变量:

CLOCK_RATE_A =2;
CPU_TIME_A = 10;

以下代码是否允许我执行计算 10 * (2*10^9) 并将结果分配给新变量?

CLOCK_CYCLES_A = CPU_TIME_A * (CLOCK_RATE_A * pow(10, 9));
4

1 回答 1

0

这取决于您的数据类型。如果pow不是标准 C 库函数pow定义为返回 an int,并且您的其他类型是,那么您将在某些平台上int溢出该类型。int

(请注意,这pow(10, 9)非常接近int32 位平台的限制。)

但是,如果pow按照标准实现(即返回浮点类型),则表达式

CPU_TIME_A * (CLOCK_RATE_A * pow(10, 9))

将以浮点计算,您应该设置CLOCK_CYCLES_A为一个double类型,或者如果您的平台和编译器有一个,则转换为一个 64 位整数。

于 2013-10-10T12:35:13.250 回答