2016-04-20 127 views
-2

我有這樣的代碼,其計算值的指數功率,這兩者是由用戶,例如輸入,用戶輸入2^3 = 8,其假設像這樣工作,但,最終的結果是608出頭錯誤,當我在計數器中的pwra函數中進行調試時,即使在計數器初始化結果值被設置之前,從我不知道的地方開始,因爲我沒有設置它,所以最終結果是608。我覺得它是一個緩衝區問題,但我有嘗試了進出口,它不起作用。所以當我將這段代碼複製到一個新窗口時,它會在一段時間內運行,然後再次顯示,之前它顯示624作爲最終結果。可變緩衝區?

#include <stdio.h> 
int pwra (int, int); 

int main() 
{ 
    int number, power, xx; 
    printf("Enter Number: "); 
    scanf("%i", &number); 

    printf("Enter Number: "); 
    scanf("%i", &power); 

    xx=pwra (number,power); 
    printf("Result: %i", xx); 

    return 0; 
} 

int pwra (int num, int pwr) 
{ 
    int count, result; 

    for(count=1;count<=pwr;count++) 
    { 
     result = result*num; 
    } 
    return result; 
} 

另一件事,我怎樣才能從float計算的指數值,因爲當我改變所有的intfloat最終的結果總是0.00000甚至%lf

+1

至於你的浮點問題,除了什麼Sourav戈什回答,您使用的'float'或'double'?雖然'printf'並不重要,當您使用['scanf'](http://en.cppreference.com/w/c/io/fscanf)時,格式規範和類型很重要:''%lf「 ''是'double',''%f''是'float'。 –

+0

OK,感謝球員,似乎是在一個軟件編譯器問題,當我改變了軟件的做工精細,啓動了在它的兩個工作後,無論如何,但是浮動的事情並沒有在任何工作,最終的結果是0.00000。我改變了整數倍,並浮動以及,沒有工作..我確實得到了一個-1.NANO作爲答案,但在此之後什麼都沒有,仍然0.00000。爲了澄清我想要做的是讓用戶輸入值和指數作爲浮點數,最終結果肯定會很長,因此最終結果必須長雙倍,如lf .. – TryllZ

+1

無論如何問題你有,這不是一個編譯器問題。 Sourav Ghosh回答了主要問題,現在如果你有浮點數問題,你應該發表關於它的另一個問題,顯示新的代碼(使用浮點數據類型和格式),我們將很樂意幫助你。 –

回答

6

你打undefined behavior爲低於線

result = result*num; 

因爲你沒有初始化result。未初始化的自動局部變量的初始值是不確定的。使用它調用UB。

總是初始化局部變量,像

int count = 0 , result = 0 ; //0 is for illustration, use any value, but do use 

然後來要改變所有int s到float,只改變了變量的數據類型的情況下,是不夠的。您也需要更改相應的格式說明符。

+1

在他的情況下,'result'需要初始化爲1 –

+0

@ AimanAl-Eryani是的,同樣的。 –

+0

'count'在'for'環...... –