我曾尝试在SO上阅读很多问题,但我似乎无法理解为什么我的程序反应如此奇怪.. 我有这个简单的代码试图实现sqrt函数:
double sqrt,high,low,currNum;
scanf("%lf",&sqrt);
high = sqrt;
low = 0.0;
currNum = (high+low)/2.0;
调试并到达最后一行后的行后,我得到以下结果: sqrt等于6(这是输入的数字..) 高等于0(????)。 低等于0。 currnum等于6(???)。
我只是不了解这个值的行为...... 请帮忙吗?
答案 0 :(得分:0)
我似乎无法理解为什么我的程序反应如此奇怪......我有这个简单的代码......
我会解释你的节目。此行在内存中保留四个空格,其中每个空格的大小为double,但没有为任何空间分配特定值。然后,您可以期望每个随机值。
double sqrt,high,low,currNum;
如果您想要将每个值设为零,请改用此行:
double sqrt=0,high=0,low=0,currNum=0;
此行读取并接受double类型的数字输入,并将值存储在sqrt变量中:
scanf("%lf",&sqrt);
将high设置为sqrt:
的值high = sqrt;
这将低值设为0.0:
low = 0.0;
计算用户键入的内容之和,然后将总数除以一半(a.k.a。除以2),然后将结果存储在currNum变量中:
currNum = (high+low)/2.0;
在调试并到达最后一行之后的行之后,我得到以下结果:sqrt等于6(这是输入的数字..)high等于0(????)。低等于0. currnum等于6(???)。我只是不明白这个价值观的行为......请帮忙吗?
因为你将“低”设置为零,你在这里所做的是一个计算用户输入数字的一半的程序。
...尝试实现sqrt功能:
我确定如果您使用C库,您将获得良好的平方根函数。该程序打印9的平方根。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double x=sqrt(9);
printf("%lf",x);
return 0;
}