我说我有两个变量如下:
CLOCK_RATE_A =2;
CPU_TIME_A = 10;
下面这段代码是否允许我执行10 *(2 * 10 ^ 9)的计算并将结果分配给一个新变量?
CLOCK_CYCLES_A = CPU_TIME_A * (CLOCK_RATE_A * pow(10, 9));
答案 0 :(得分:0)
这取决于您的数据类型。如果pow
不标准C库pow
函数并定义为返回int
,而您的其他类型为int
则会溢出某些平台上的int
类型。
(请注意,pow(10, 9)
非常接近32位平台上的int
限制。)
但是,如果按照标准实现pow
(即返回浮点类型),那么表达式
CPU_TIME_A * (CLOCK_RATE_A * pow(10, 9))
将以浮点计算,您应该将CLOCK_CYCLES_A
设置为double
类型,或者如果您的平台和编译器有一个,则转换为64位整数。