簡體   English   中英

從int轉換為long long

[英]converting from int to long long

我試圖將我的程序從int轉換為long long,但是return參數似乎存在問題,因為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);
}

謝謝你的幫助。

將以下函數的返回類型更改為long long。 出現此錯誤的原因是在'potenzieren'函數中將返回類型從long long隱式轉換為int會導致數據丟失。

另外,請將“ i”設置為long long(否則,如果指數超出int范圍,則for循環可能永遠不會結束)

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;
}

該函數仍然返回一個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;
}

另外,如果您確實想返回一個int並且確定不會導致溢出,則可以通過以下方式將long long顯式轉換為int

return static_cast<int>(ergebnis);

這樣,編譯器將知道這就是您想要的,並且不再警告您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM