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

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

スポンサード リンク

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

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

ソース(バグ有り):

#include <iostream>
using namespace std;

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


原因:
long 型の変数(a+bの結果)をshort型変数に代入しようとしたのが原因です。桁数の少ない変数への代入のため情報が失われる(正しく代入されない)可能性があります。

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


ソース(修正済み):

#include <iostream>
using namespace std;

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

スポンサード リンク



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