此问题已经在这里有了答案:
我正在尝试使用2个short
类型的数字执行模运算:
short short1 = 1; // or any other short value
short short2 = 2;
short result = short1 % short2;
但是我收到此编译错误:
无法将类型'int'隐式转换为'short'。一个明确的转化存在(您是否缺少演员表?)
为什么编译器认为结果应为int
类型?结果必须在0到min(short1,short2)之间,并且两个值均为short
。
在您的情况下,请使用模块运算符将short
编号提升为int
之前,因为没有为小于int
的类型定义余数运算符。
所以您有int int.operator %(int left, int right)
,返回类型为int
。
您可以明确地转换为short
,因为您知道结果可由short
表示。
short result = (short)(short1 % short2);