这个C程序有什么问题?

时间:2014-03-19 20:01:57

标签: c pow

我只是想将 pow 的值赋给变量,我用过这个

#include<stdio.h>
#include<math.h>

int main( void )
{
int x;
int y;
int z;
x=10;
y=2;

z = pow(x,y);
printf ("%d" , &z);

return 0;
}

但在输出中我得到-1076813284,对不起,但我刚开始学习C并且在每个教程中每个人都只打印pow的值,比如

printf("Value 3.05 ^ 1.98 = %lf", pow(3.05, 1.98));

我不知道如何将它分配给变量

4 个答案:

答案 0 :(得分:5)

printf ("%d" , &z);

打印z(*)的地址,而不是其值。 printf("%d", z)打印该值。

(*)实际上,行为是未定义的,在64位CPU上,它可能会打印一半的地址。

答案 1 :(得分:2)

&z是变量z的地址。如果您要打印z,那么代码就是

printf("%d", z);

值读入&z时,您会使用z,因为scanf需要一个指针才能修改您的变量。

答案 2 :(得分:1)

pow返回double,它接受​​double类型的参数。

double pow(double x, double y)  

您需要%f中的printf说明符,并从&中删除z

另一种方法是将pow的返回值转换为int并使用%d

int z = (int)pow(x, y);
printf ("%d" , z);

答案 3 :(得分:1)

pow返回一个double(而不是引用),你需要创建你的print语句:

printf ("%f" , z);

将z更改为double后:

double z;