Не выполняется тогда и только тогда, когда в b -- NaN.
Обоснование есть в стандарте: пункт стандарта C99 6.2.6.1:4 говорит:
Two values (other
than NaNs) with the same object representation compare equal, but values that compare
equal may have different object representations.
На мой взгляд выжная книга - "Дизайн и эволюция языка C++" Страуструппа. Она хорошо тем, что описывает мотивацию принятия тех или иных решений, которые в этом языке часто бывают странными.
Но я не уверен, что C++ полезен в embedded. Лучше осваивать Rust.
1. Си, С++
2. Лучше сразу начинать с stm32 (Архитектура популярная, а конкретно эти МК - банально больше материала, и новичку проще разобраться)
3. Навыки работы с мультиметром, осцилографом, логическим анализатором
4. Устройство и распределение памяти (очень нужная вещь при отладке)
5. Базовые понятие в области схемотехники (со схемами часто приходиться разбираться)