"error C2041: 指定された文字 '9' は、基数 '8' に適切な数字ではありません" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2041: 指定された文字 '9' は、基数 '8' に適切な数字ではありません。

ソース(バグ有り):

//bitset のサンプルコード
//ビットで表現する

#include <iostream>
#include <bitset>

int main()
{
unsigned long value = 01920;
//11920 を 16 ビット数で表示する
std::cout << std::bitset<16>(value) << std::endl;
return 0; }


原因:
指定した文字は8進数あるいは16進数ではありません。

0で始まる場合は以下と解釈されます。

数字の先頭が 0 のとき→8 進数

0x のとき→16 進数

上記以外の時→ 10 進数

対処:
指定した数値を見直します。

この例では 01920 は8進数、16進数とも見なされないためエラーとなっています。

9 は8進数には使用しない数値のためエラーとなっています。


ソース(修正済み):

//bitset のサンプルコード
//ビットで表現する

#include <iostream>
#include <bitset>

int main()
{
unsigned long value = 11920;
//11920 を 16 ビット数で表示する
std::cout << std::bitset<16>(value) << std::endl;
return 0; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]