"C2440: '初期化中' : 'const char [<要素数>]' から 'char' に変換できません。" に関する原因と対処

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

スポンサード リンク

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

コンパイルエラーメッセージ:
C2440: '初期化中' : 'const char [<要素数>]' から 'char' に変換できません。この変換が可能なコンテキストはありません。<ソースファイル名> : error C2664: 'printf' : 1 番目の引数を 'char' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照) 整数型からポインター型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。

ソース(バグ有り):

#include <stdio.h>
int main()
{
char temp="テストメッセージ";
printf (temp); }


原因:
文字列へのポインタアドレス("テストメッセージ"のアドレス)をchar 型の変数に代入しようとしました。型が異なるため代入できません。

対処:
代入先をchar型変数ではなく、char型へのポインタに変更します。

char *temp="テストメッセージ";

の代わりに char temp[]="テストメッセージ";

でも同じ結果となります。


ソース(修正済み):

#include <stdio.h>
int main()
{
char *temp="テストメッセージ";
printf (temp); }

スポンサード リンク



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