我有一个错误代码,我不明白:错误代码:%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字符渲染不正确(可能某些转换错误地执行了两次)。我已经清理了一下。 –