我试图将我的程序从int转换为long long,但是返回参数似乎有问题,因为XCode说明了int和long long之间的隐式转换..
#include <iostream>
using namespace std;
int potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (int i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
int main()
{
cout << "Programm zum Potenzieren.\r";
long long a=0;
long long b=0;
cout << "Basis?:";
cin >> a;
cout << "Exponent?: ";
cin >> b;
potenzieren(a,b);
}
感谢您的帮助。
答案 0 :(得分:3)
将以下函数的返回类型更改为long long。你得到这个错误的原因是一个隐含的返回类型从long long转换为int in potenphieren&#39;函数将在数据丢失时返回。
另外请修理&#39;我&#39;很长(否则你的for循环可能永远不会结束,如果指数超出int的范围)
long long potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (long long i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
答案 1 :(得分:3)
此功能仍会返回int
:
int potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (int i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
如果您希望它返回long long
,则需要更改其返回类型:
long long potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (int i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
答案 2 :(得分:0)
此外,如果您确实想要返回int
而且您确定它不会导致溢出,则可以通过以下方式明确地将long long
转换为int
:< / p>
return static_cast<int>(ergebnis);
这样编译器就会知道这就是你想要的,不应再警告你了。