Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.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中,当电源设置为1/2时,为什么电源功能返回1?_C_Syntax_Integer Division - Fatal编程技术网

在C中,当电源设置为1/2时,为什么电源功能返回1?

在C中,当电源设置为1/2时,为什么电源功能返回1?,c,syntax,integer-division,C,Syntax,Integer Division,当我使用下面的代码时,我试图复制这样一种想法,即某物的sqrt(x)等于x^(1/2) 无论我输入什么值,它都返回1。我已经用sqrt函数解决了这个问题,但想知道为什么将来会发生这种情况。在它的原始形式中,1/2是整数除法,产生的结果是0 数学101:任何提升0的值都是1。整数除法产生整数结果,因此1/2产生0,而不是0.5。至少有一个操作数必须是浮点值才能获得浮点结果,例如1/2.0。虽然您可以只写0.5并保存胃灼热。1(整型文字)除以2(整型文字)要求整数除法(在运算符/上),结果是0。从那

当我使用下面的代码时,我试图复制这样一种想法,即某物的
sqrt(x)
等于
x^(1/2)


无论我输入什么值,它都返回1。我已经用sqrt函数解决了这个问题,但想知道为什么将来会发生这种情况。

在它的原始形式中,
1/2
是整数除法,产生的结果是
0


数学101:任何提升0的值都是1。

整数除法产生整数结果,因此
1/2
产生
0
,而不是
0.5
。至少有一个操作数必须是浮点值才能获得浮点结果,例如
1/2.0
。虽然您可以只写
0.5
并保存胃灼热。

1
(整型文字)除以
2
(整型文字)要求整数除法(在运算符
/
上),结果是
0
。从那以后,你将
0
给一个函数,
pow(3)
,它将你的
0
转换成
0.0
(作为该函数所需的
double
),这就是你正在计算的,
x
0.0
的幂,即
1.0

你用过吗

pow(x, (1.0/2.0)); /* there's a closing parenthesis missing in your sample code */
使用浮点文本,而不是整数,除法应该是浮点,结果是
0.5
,并且应该计算
x
的平方根

顺便说一下,您有一个函数
sqrt(3)
在同一个库中进行平方根运算:

普鲁士
C++中的P>1/2是0,因为两者都是整数。你可以使用1.0/2.0或0.5来做你想做的事。

pow(x,(1/2);
是一个语法错误。请注意
sqrt(x)
可能比
pow(x,0.5)
x*x肯定比
pow(x,2)
pow(x,(1/2)
pow(x,0.5)
好的,这是有道理的。谢谢你的帮助。虽然这个问题的解释是有效的。关于OP的意图,建议像
1.0f/2
(导致
0.5
)这样的浮点除法来解决这个问题会有帮助吗?
pow(x, (1.0/2.0)); /* there's a closing parenthesis missing in your sample code */
#include <math.h>
#include <stdio.h>

/* ... */

int main()
{

    double x = 625.0;

    printf("square root of %.10f is %.10f\n", x, sqrt(x));
    printf("%.10f to the power 1/2 is %.10f\n", x, pow(x, 1.0/2.0));
    return 0;
}

$ make pru
cc -O2 -Wno-error  -Werror    -o pru pru.c 
$ pru
square root of 625.0000000000 is 25.0000000000
625.0000000000 to the power 1/2 is 25.0000000000
$ _