从int转换为long long

时间:2015-10-31 21:08:15

标签: c++

我试图将我的程序从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);
}

感谢您的帮助。

3 个答案:

答案 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);

这样编译器就会知道这就是你想要的,不应再警告你了。