"C4244: '初期化中' : 'double' から 'int' への変換です。" に関する原因と対処

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

スポンサード リンク

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

コンパイルエラーメッセージ:
warning C4244: '初期化中' : 'double' から 'int' への変換です。データが失われる可能性があります。

ソース(バグ有り):

#include <iostream>
using namespace std;

int main()
{
double a = 1;
double b = 2;
int c = a+b;
cout << "c=" << c << endl; }


原因:
double型の変数(a+bの結果)をint型変数に代入しようとしたのが原因です。浮動小数点の変数を整数型に変換したため情報が失われる(正しく代入されない)可能性があります。

対処:
代入時の型を見直します。この例ではdoubleとdoubleの加算であるため、代入先の型をdoubleで設定します。


ソース(修正済み):

#include <iostream>
using namespace std;

int main()
{
double a = 1;
double b = 2;
double c = a+b;
cout << "c=" << c << endl; }

スポンサード リンク



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