Задать вопрос
@forgoty

Почему условие if ( a == a) может не выполняться для Embedded-разработки?

Ходил на собеседование на позицию Embedded C Developer. На собеседовании спросили:

Почему, какое и при каких условиях не будет выполнятся if statement?
int a;
float b;

int main(){
    if (a == a){
        ...
        (some code)
        ...
    }

    if (b == b){
        ...
        (some code)
        ...
    }


Меня это сразу удивило. Я ответил, что никто бы так писать не стал. Однако, предложили подумать. Я начал рассуждать на тему прерываний. Что оно могло возникнуть и изменить переменные во время сравнения. Но мне так и не ответили почему, а просто промолчали. Подскажите, пожалуйста, ответить на этот вопрос хотя бы уже для себя. Просто интересно.
  • Вопрос задан
  • 633 просмотра
Подписаться 2 Средний 2 комментария
Ответ пользователя CityCat4 К ответам на вопрос (3)
CityCat4
@CityCat4 Куратор тега C
Дома с переломом ноги
Ну, я бы сказал, что не выполнится (b == b) потому что формат хранения float таков, что точного сравнения провести невозможно. Число с плавающей точкой есть математическая абстракция, для реализации которой в вычислительной технике (которая оперирует конкретными нулями и единицами) применяется ряд допущений ;)
Ответ написан