2015-10-31 232 views
-1

我試圖將我的程序從int轉換爲long long,但返回參數似乎有問題,因爲XCode說int和long long之間的隱式轉換的一些情況..從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); 
} 

感謝您的任何幫助。

+1

'double double'?當然,你的意思是「長久」,不是嗎? – Cornstalks

+0

函數的返回類型是int。改變它很長。或者雙倍。您可能必須明確投射。 –

+0

是的,我很久很久。 – Lukas

回答

3

將以下函數的返回類型更改爲long long。你得到這個錯誤的原因是返回類型從long long到int的隱式轉換,在'potenzieren'函數中會返回數據丟失。

也請修復「我」是很長很長(否則你的循環,如果指數超過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; 
} 
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; 
} 
0

此外,如果你真的想返回int並且要確保它不會導致溢出,你可以簡單地明確將您long longint這樣:

return static_cast<int>(ergebnis); 

這樣編譯器會知道這是你想要的,不應該再警告你了。