2015-10-31 3 views
-3

Ive пытался читать много проблем на SO, и все же я не могу показаться, чтобы понять, почему моя программа реагирует так странно .. У меня есть этот простой код пытается реализовать функцию SQRT:Присвоение двойных значений в C работает неожиданно

double sqrt,high,low,currNum; 
scanf("%lf",&sqrt); 
high = sqrt; 
low = 0.0; 
currNum = (high+low)/2.0; 

после отладки и достижения линии после последнего, у меня есть следующие результаты: sqrt равно 6 (это номер, который был введен.) high равно 0 (????). низкий равен 0. currnum равно 6 (???).

Я просто не понимаю поведение этих значений ... помогите пожалуйста?

+0

'sqrt' также является математической функцией для вычисления квадратного корня. – 101010

+0

[не использовать зарезервированные имена.] (Http://www.tutorialspoint.com/c_standard_library/c_function_sqrt.htm) – Michi

+3

Вы не показываете, как вы проверяете эти цифры. Пожалуйста, напишите [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve). – dbush

ответ

0

Я не могу показаться, чтобы понять, почему моя программа реагирует так странно .. У меня есть этот простой код ...

Я объясню свою программу. Эта строка резервирует четыре пробела в памяти, где каждое пространство имеет размер в два раза, но никакое конкретное значение не назначено никому. Затем вы можете ожидать случайные значения для каждого.

double sqrt,high,low,currNum; 

Если вы хотите, чтобы каждое значение ноль, чтобы начать с, используйте эту линию вместо:

double sqrt=0,high=0,low=0,currNum=0; 

Эта линия читает и принимает числовой вход, который двойного типа и сохраняет значение в переменная SQRT:

scanf("%lf",&sqrt); 

Это устанавливает высокий к значению SQRT:

high = sqrt; 

Это устанавливает низким, чтобы быть 0,0:

low = 0.0; 

Это вычисляет сумму, что пользователь ввел затем делит пополам общий (А.К.А. на 2), а затем сохраняет результат в переменной currNum:

currNum = (high+low)/2.0; 

после отладки и достижения линии после последнего, у меня есть эти результаты: SQRT равна 6 (это номер, который был введен. .) high равно 0 (????). low равно 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; 
} 
+0

Это всего лишь часть кода, который действует странно. Остальная часть реализации упоминается, поскольку проблема не существует. –

+0

Я просто смущен тем, что вы пытаетесь выполнить. Если его вычислить квадратный корень из числа, тогда используйте мой код в моем ответе в качестве отправной точки. – Mike

Смежные вопросы