【发布时间】:2011-08-18 10:59:03
【问题描述】:
我写了以下小程序打印出斐波那契数列:
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' 太短'。显式转换 存在(您是否缺少演员表?)
既然涉及的所有内容都是 Int16(短),那么为什么要进行任何隐式转换?更具体地说,为什么在这里失败(而不是在最初将 int 分配给变量时)?
非常感谢您的解释。
【问题讨论】:
-
哪一行出错了?为什么你出于兴趣使用短裤?
-
@Tom id 假设他在这一行有评论问题所在的行
-
我建议你直接使用 int 来代替,除非有很好的理由使用 Int16
-
我只是在使用
Int16进行实验,所以我可以看到序列再次开始(当Int16的宽度不能再容纳太大的值时)