да ну, система типов "вмешивается"?
Почему внешняя? Просто в си (не си++) указатели и целые числа - почти одно и тоже, их можно сравнивать напрямую. В плюсах добавили литерал nullptr, это отдельный класс, тут уже типизация рулить. Но под капотом это всё тот же 0. В шарпе тоже типизация, но что под капотом - я пока не узнал. Наверное, снова 0