2014-11-25 96 views
-5

我有這個代碼,我想知道爲什麼這個變量沒有返回for循環外的任何值。爲什麼變量沒有外部循環的價值?

void juizes_nota_alta(str_nomepont a) 
{ 
    int i,j; 
    int notamax=0; 
    for (i=0;i<MAX_JUIZES;i++) 
    { 
     if (a.pontuacao[i]>notamax) 
     { 
      notamax=a.pontuacao[i]; 
      j=i; 
     } 

    } 
    printf("O juiz que deu a nota mais alta foi:\n",j); 

變量j不返回值。

謝謝

+0

你是什麼意思不返回任何價值?如果變量沒有被初始化,在這種情況下,如果你的'if'情況永遠不會成功? – Gopi 2014-11-25 14:35:24

+3

審查您的printf。 – DRC 2014-11-25 14:36:08

回答

3

printf()是錯誤的。

它應該包含一個%d轉換說明符。字符串控制打印的內容,只是傳遞更多參數不會讓它們顯示出來,除非字符串如此。

解決這個問題會讓你再向前一步。在循環之前還要添加j = 0以確保j在打印時具有有效值。

+0

完成,謝謝我的錯誤 – 2014-11-25 14:38:10

2

基於某些條件初始化變量不是一個好主意。

如果條件不滿足和變量永遠不會被初始化,當您嘗試使用變量你有一個不確定的變量值

所以才分配j到任何東西,同時聲明使

int j=0; 

在之前您的printf()正如大家所建議使用%d格式說明符。

相關問題