読者です 読者をやめる 読者になる 読者になる

集中力なら売り切れたよ

プログラミングや、将棋などについて書きます。

C言語で数値のべき乗を求めるにはpow関数を使う

C++

標準ライブラリのpow関数を使うとべき乗を求めることができます。

#include <stdio.h>
#include <math.h>

int main(int argc, char* argv[])
{
    for (double i = 0; i < 32; i++) {
        printf("2 ** %d = %d\n", (int) i, (int) pow(2.0, i));
    }
    return 0;
}

しかしコンパイルして実行してみるとわかりますが2 ** 31で桁あふれしてしまいます。

C言語は難しいですね。

実行結果

2 ** 0 = 1
2 ** 1 = 2
2 ** 2 = 4
2 ** 3 = 8
2 ** 4 = 16
2 ** 5 = 32
2 ** 6 = 64
2 ** 7 = 128
2 ** 8 = 256
2 ** 9 = 512
2 ** 10 = 1024
2 ** 11 = 2048
2 ** 12 = 4096
2 ** 13 = 8192
2 ** 14 = 16384
2 ** 15 = 32768
2 ** 16 = 65536
2 ** 17 = 131072
2 ** 18 = 262144
2 ** 19 = 524288
2 ** 20 = 1048576
2 ** 21 = 2097152
2 ** 22 = 4194304
2 ** 23 = 8388608
2 ** 24 = 16777216
2 ** 25 = 33554432
2 ** 26 = 67108864
2 ** 27 = 134217728
2 ** 28 = 268435456
2 ** 29 = 536870912
2 ** 30 = 1073741824
2 ** 31 = -2147483648