2013-08-23 3 views
-3

Недавно я работаю над проектом и сталкиваюсь с какой-то странной проблемой в VS2008. В моем проекте требуется некоторый расчет, но после вычисления я получаю недопустимое значение (-1. # IND000000000000).Странный двойной расчет в VS2008

Например:

double a,b,c,d; 

И я хочу, чтобы получить д по:

d=a*b+c*c; 

Но результат -1 # IND000000000000.. Однако, если вычислить * б первый:

double e=a*b; 

Тогда я получить правильное значение г по:

d=e+c*c; 

Что может объяснить это различие?

+2

"Друзья больницы" ??? – hexafraction

+1

У вас есть неопределенное поведение. Ни одна из ваших переменных 'double' не была инициализирована. – juanchopanza

+1

@hexafraction, любой, кто задает этот вопрос слишком много мысли, действительно предназначен для больницы;) –

ответ

1

Вы не инициализировали любые ваших переменных, поэтому результат вашей программы совершенно непредсказуем.

Добавить некоторые фактические значения, на которых для выполнения вашей арифметики, и все может протекать более гладко ...

0

Воспользоваться Paranthesis в случае выражения для вашей хорошей практики. это позволит избежать путаницы в отношении порядка приоритета оператора, который необходимо принять во внимание.

+0

Всем известно, что умножение имеет более высокий приоритет, чем добавление. – willys

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