Изменена инициализация двойной переменной C++.C++

Программы на C++. Форум разработчиков
Anonymous
 Изменена инициализация двойной переменной C++.

Сообщение Anonymous »

Это скорее вопрос о том, почему это происходит. Я нашел способ обойти это, но не понимаю.
Я написал код для обработки данных. Базовая настройка такова: я сравниваю два значения и, если значение значение1 больше значения2, я проверяю, превышает ли процентная разница между другим набором значений (значение3 и значение4) пороговое значение. Если оно превышает пороговое значение, целочисленной переменной присваивается значение 1, если нет, я оставляю ее равной 0.
код:

Код: Выделить всё

function(int value1, int value2, double value3, double value4) {
int caseFlag = 0;

double caseThreshold = 0;
double caseCheck = 0;

if (value1 < value2) {
caseThreshold = (value3 - value4) / value4;
caseCheck = caseThreshold - .005;
}

if (caseCheck >= 0) {
caseFlag = 1;
}
}

У меня есть 2 набора функций, которые служат для обработки разных временных сценариев: первая функция никогда не вызывает проблем, а вторая - создает. В первом сценарии приведенные выше коды правильно устанавливают значение caseFlag. Во втором случае приведенный выше код всегда устанавливает значение caseFlag равным 1.
Когда я изменил код во втором сценарии на этот формат, он работал нормально.

Код: Выделить всё

function(int value1, int value2, double value3, double value4) {
int caseFlag = 0;

double caseThreshold = 0;
double caseCheck = 0;

if (value1 < value2) {
caseThreshold = (value3 - value4) / value4;
caseCheck = caseThreshold - .005;
if (caseCheck >= 0) {
caseFlag = 1;
}
}
}
Кто-нибудь знает причину?

Подробнее здесь: https://stackoverflow.com/questions/790 ... is-changed

Вернуться в «C++»