为什么这个代码对Goldbach猜想类型输出不正确?

时间:2016-08-25 17:43:58

标签: c

我是C的新手。我需要一些帮助。 基于素数和偶数正整数算法以及循环和其他东西的一些知识,我提出了以下代码 对于GOLDBACH CONJECTURE。

编译器说:

warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’


{
    printf("\t%d\t%d",&t1,&t2);
}

2 个答案:

答案 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,它是输入。