Да, это означает, что castPointer
не обязательно равен нулю, и утверждение может потерпеть неудачу. Поскольку константа нулевого указателя равна нулю, нулевой указатель некоторого типа не обязательно является адресом со всеми нулевыми битами.
reinterpret_cast
не имеет специальных условий для выдачи нуля при приведении нулевого указателя на int. Вы можете достичь этого, используя логические операторы, которые инициализируют переменную либо 0
, либо 1
:
int castPointer = (voidPointer != 0);