Я бы не стал полагаться на ваше (или GDB) знание приоритета операторов в этом случае.Попробуйте добавить пару скобок, чтобы убедиться, что вы, компилятор и GDB действительно видите одно и то же ...
newIterationRequired = ( ( infoAvailableUntil + 1 ) < ( sqrt( input ) + 1 ) ) && isPrime
Да, и подсказка: Проверьте <stdbool.h>
...
Редактировать 1: Ваш комментарий говорит, что это не решило вашу проблему.
Ну, тогда выделите сложное утверждение в его подстанции.Сохраните infoAvailableUntil + 1
во временную переменную.Сохраните sqrt( input ) + 1
в другой временной переменной.Составь newIterationRequired
из этих временников.Внутри GDB проверьте, согласны ли код, вы и GDB с результатами каждого промежуточного шага.
Это элементарная отладка .Выделите утверждение, которое доставляет вам проблемы, уменьшает его сложность до тех пор, пока вы не найдете ошибку или не сможете задать очень точный вопрос.
(Лично мой следующий «лучший подозреваемый» - это то, что ваш код и gdb видятдругое дело, когда вы говорите sqrt()
.)