Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个C程序有什么问题?_C_Pow - Fatal编程技术网

这个C程序有什么问题?

这个C程序有什么问题?,c,pow,C,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; } 我不知道如何将它赋给变量pow返回double,它接受类型为double的参数 double pow(double x, double y) 您需要在pri

我只想给一个变量赋值,我用了这个

#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;
}

我不知道如何将它赋给变量

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

double pow(double x, double y)  
您需要在
printf
中使用
%f
说明符,并从
z
中删除
&

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

int z = (int)pow(x, y);
printf ("%d" , z);
打印
z
(*)的地址,而不是其值<代码>打印F(“%d”,z)打印值


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

&z
是变量
z
的地址。如果要打印出
z
的值,则只需

printf("%d", z);
在将值读入
z
时,您会使用
&z
,因为
scanf
需要一个指针来修改变量。

pow返回一个双精度(而不是引用),您需要生成打印语句:

printf ("%f" , z);
将z更改为双精度后:

double z;

打开编译器警告。为什么要打印出
&z
?谢谢大家我们解决了这个问题,这是我的noob错误,我是新来的,在pascal中我不需要-,我想我总是需要它,再次感谢大家
int
可以转换成99或100。@chris;这是什么意思?@alk;我知道。对克里斯说:)@alk;您可以在
printf
中使用任何一个。我的意思是,当OP将
int
传递到
pow
时,它将转换为
双精度
。当OP将返回的
double
存储到
int
中时,它也会被转换回来,因此
z
将是99或100中的一个,因为浮点不准确。由于OP的
z
int
printf
需要告知它是
int
,或者
z
的类型需要更改(这可能更好,以免随机打印99)。谢谢!在那些初学者教程中,每个人都会用到&我想这是一个很好的例子obligatory@Luka,对于
scanf
可能是因为C是传递值,因此
scanf
无法读取变量。您仍然需要将printf更改为%f或%lf@alk但是pow并没有定义为返回一个int,只返回double。因此,除非您打算进行隐式转换,否则您需要在printf中将z更改为双精度和%f。@Jack;我百分之百同意你的意见。这就是我的答案。
%f
代表
浮动
,而不是
双重
@chris;是,它适用于
printf
中的
double
。如果是
scanf
的话,你需要
%lf
来做双人。@Jack,哎呀,我的错了。我想到的是scanf。它在
printf
中没有意义,因为它是作为
double
传入的。
printf ("%f" , z);
double z;