> но как этот NULL представляется в машине? 000000000 - NULL адрес, а все остальное реальный указатель адреса, и т.д. Можно за NULL взять любое другое значения, все зависит от представления.С NaN аналогично же. Условились, что NaN - это все единички в показателе и не ноль в мантиссе.
>> Хотя вроде оно никуда не указывает. Но тип ссылочный.
>А что значить никуда не указывает? то есть не значим? а значимость чего либо определять? как можно работать с тем чего нет (формально нет)?
NULL формально не указывает ни какие валидные данные. Его нельзя разыменовывать, будет UB. При этом он считается значением ссылочного типа. Так же дело обстоит и с NaN
> но это не число, это состояние "не числа"
Типы с плавающей точкой float/double - они да, чуть больше чем числа, они могут иметь значением какое-то число, бесконечность или NaN. Ветка начиналась с того, что в JS типом NaN выдаётся number - но тут опять же выходит, что number - это название типа данных, аналогичного float/double, соответственно включает и NaN. Можно придираться, что NaN - не число, но только фактически-то что с того? Отдельный тип данных под NaN городить? Или назвать числовой тип не number?
Вообще, я тут вспомнил, собственно-то и сами по себе значения float/double "чисельные" - они по понятным причинам действительными числами строго не являются. Числовые типы в программировании с математическим действительным числом далеко не полностью соотносятся