2016-07-26 159 views
-4

我得到以下錯誤: 格式'%d'需要類型爲'int'的參數,但參數2類型爲'int *' i不知道爲什麼它期待一個int *,有人可以給我解釋嗎?我不知道爲什麼我不工作,格式%d期望

#include <stdio.h> 


int main(void) 
{ 

    int wisselgeld = 70; 
    int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0; 

    a = wisselgeld/200; 
    b = (wisselgeld - (a * 200))/100; 
    c = (wisselgeld - (a * 200) - (b * 100))/50; 
    d = (wisselgeld - (a * 200) - (b * 100) - (c * 50))/20; 
    e = (wisselgeld - (a * 200) - (b * 100) - (c * 50) - (d * 20))/10; 
    f = (wisselgeld - (a * 200) - (b * 100) - (c * 50) - (d * 20) - (e * 10))/5; 

    printf("%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n", &a, &b, &c, &d, &e, &f); 

    return 0; 
} 
+0

'&a'返回一個指向變量a的指針。它不是expectg'int *',它是給予它的。 – mszymborski

+0

@Carcigenicate - C自動合併多行字符串。它非常整齊。 – mszymborski

+0

你不需要在你的int變量之前。 – leetibbett

回答

2

&variable是存儲器地址。當您需要int時,您正在使用指針(int *)。要傳遞int作爲參數,只需使用變量名稱,例如a而不是&a

0

當你調用

printf("%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n", &a, &b, &c, &d, &e, &f); 

&符號意味着,你正在服用的變量的地址。由於變量類型爲int,因此得到的結果是int *。你有什麼寫的是

printf("%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n" 
     "%d\n", a, b, c, d, e, f); 
1

&(變量)提供了一個變量的地址。要打印值,您可以直接使用整數變量名稱。

0

去除&符號的作品 感謝您的幫助

+2

當您提出問題並獲得有用答案而不是發佈答案時,請選擇最相關的答案。 – ameyCU

1

printfscanf想到兩個不同的東西,這可能是導致爲什麼你這個錯誤。

int*(指向一個整數或整數地址的指針)是當你取整數變量的地址(&)時得到的結果。只需將&a, &b,...更改爲a, b即可獲得解決方案。爲了在兩個輸入/輸出中使用相同的變量,請在任何scanfs中繼續使用&a,但在任何printfs中使用a

相關問題