フィボナッチ数列を出力するために、次の小さなプログラムを作成しました。
static void Main(string[] args)
{
Console.Write("Please give a value for n:");
Int16 n = Int16.Parse(Console.ReadLine());
Int16 firstNo = 0;
Int16 secondNo = 1;
Console.WriteLine(firstNo);
Console.WriteLine(secondNo);
for (Int16 i = 0; i < n; i++)
{
//Problem on this line
Int16 answer = firstNo + secondNo;
Console.WriteLine(answer);
firstNo = secondNo;
secondNo = answer;
}
Console.ReadLine();
}
コンパイル メッセージは次のとおりです。
タイプ 'int' を 'short' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)
関連するすべてが Int16 (short) であるため、暗黙の変換が行われるのはなぜですか? より具体的には、なぜここで失敗したのですか (変数に最初に int を割り当てたときではありません)?
説明をいただければ幸いです。