-3

以下にリストされている2つの変数があるとします。

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

データ型によって異なります。が標準 C ライブラリ関数ではなく、をpow返すようpowに定義されていてint、他の型が である場合、一部のプラットフォームでは型intがオーバーフローします。int

( 32 ビット プラットフォームpow(10, 9)の制限に非常に近いことに注意してください。)int

ただし、pow標準に従って実装されている (つまり、浮動小数点型を返す) 場合、式は

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

浮動小数点で計算されCLOCK_CYCLES_Adouble型に設定するか、プラットフォームとコンパイラにある場合は 64 ビット整数にキャストする必要があります。

于 2013-10-10T12:35:13.250 に答える