[英]What is wrong with this C program?
我只想将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));
而且我不知道如何将其分配给变量
printf ("%d" , &z);
打印z
(*)的地址,而不是其值。 printf("%d", z)
打印该值。
(*)实际上,该行为是未定义的,在64位CPU上,它可能会打印一半的地址。
&z
是变量z
的地址。 如果要打印出z
的值 ,则代码很简单
printf("%d", z);
当将值读入z
,将使用&z
,因为scanf
需要一个指针才能修改变量。
pow
返回double
并且它接受double
类型的参数。
double pow(double x, double y)
您需要%f
符中printf
并删除&
从z
。
另一种方法是将pow
的返回值转换为int
并使用%d
int z = (int)pow(x, y);
printf ("%d" , z);
pow返回双精度值(而不是引用),您需要执行打印语句:
printf ("%f" , z);
将z更改为双精度后:
double z;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.