我是C的新手。我需要一些帮助。 基于素数和偶数正整数算法以及循环和其他东西的一些知识,我提出了以下代码 对于GOLDBACH CONJECTURE。
编译器说:
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’
{
printf("\t%d\t%d",&t1,&t2);
}
答案 0 :(得分:1)
警告:格式
‘%d’
需要‘int’
类型的参数,但参数2的类型为‘int *’
您在printf()
中发送了错误数据类型的参数。
printf("\t%d\t%d",&t1,&t2)
在这里,您要发送&t1,&t2
类型int*
作为printf()
的参数。但是,%d
格式说明符期望参数int
类型,这就是你最终得到上述警告的原因。
您必须发送t1,t2
类型为int
的{{1}}作为参数。
printf("\t%d\t%d",t1,t2)
答案 1 :(得分:0)
假设您有一个整数变量,例如
int x;
然后
&x
返回内存中x的地址。
&符号(&)是“地址”运算符。它返回记忆中存在的东西。
我只是猜测你可能使用过这样的代码:
scanf("%d", &x)
从文件或输入中读取值。虽然printf使用类似的格式字符串,但参数是通过值而不是地址传递的。所以你只需写:
printf("%d", x) // not printf("%d", &x);
scanf需要传递的变量的地址,以便从输入更新内存中的变量。换句话说,它是一个输出参数,而对于printf,它是输入。