我有一個錯誤代碼,我不明白:錯誤代碼:%d預計int類型,但是參數的類型爲int *
format %d expects type int, but argument 2 has type int *
我不知道int
和int *
之間的差異。我不知道有int
的不同類型,並且在關鍵字printf
和scanf
的網頁上找不到任何關於它的註釋。
的代碼如下:
#include <stdio.h>
#include <math.h>
int main(void)
{
int X = 0, Y = 0, A = 0, D = 0;
printf("This program computes the area of a rectangle ");
printf("and its diagonal length.");
printf("Enter Side 1 dimentions: ");
scanf("%d", &X);
printf("Enter Side 2 dimentions: ");
scanf("%d", &Y);
/* Calc */
A = X * Y;
D = pow(X,2) + pow(Y,2);
D = pow(D, 1/2);
/* Output */
printf("Rectangle Area is %d sq. units.", &A);
printf(" Diagonal length is %d.", &D);
return 0;
}
錯誤引用過去兩年的printf的:
printf("Rectangle Area is %d sq. units.", &A);
printf(" Diagonal length is %d.", &D);
此外,此方案是使用花車最初寫(聲明X,Y,A,和D作爲浮點數並使用%f)。但是,這給了一個更奇怪的錯誤代碼:
格式%F預計double類型,但參數2的類型爲浮動*
我知道,%F是對雙打和花車,所以我不明白爲什麼我有這個錯誤。當我得到關於浮動/雙打的錯誤代碼後,我嘗試將所有內容都更改爲int(如上面的代碼所示),只是爲了檢查。但是,在這篇文章的頂部提供了錯誤代碼,我也不明白。
我一直在使用gcc編譯器。 有人會解釋什麼是做錯了嗎?
第一誤差包括類型'int'和'INT *','不int'和'int' ... –
'int'是一個整數類型。 'int *'是一個指針類型。類型爲「int」的對象包含一個整數值。一個'int *'類型的對象包含一些'int'類型的對象的地址(或者一個空指針,它不指向任何東西)。 –
複製並粘貼錯誤消息時,某些非ASCII字符渲染不正確(可能某些轉換錯誤地執行了兩次)。我已經清理了一下。 –