Что это значит `str[i]!=(char)NULL`?

136
16 мая 2019, 01:10

Что это значит str[i]!=(char)NULL?

Answer 1

Этот код "ничего" не значит, так как этот код в общем случае некорректен. Что скрывается за макро NULL в языке C++ - определяется реализацией. Макро NULL в современном C++ может быть определено как nullptr, а значение nullptr не может быть преобразовано к типу char.

Макро NULL предназначено для использования в указательных контекстах. Использование NULL в целочисленных контекстах - практически всегда ошибка, признак некомпетентного и низкокачественного кода. С появлением в языке С++ nullptr и с разрешением определять NULL именно как nullptr использование NULL в целочисленных контекстах в языке С++ фактически запрещено.

Даже до С++11 и nullptr многие компиляторы выдавали диагностические сообщения на использование NULL в целочисленных контекстах.

P.S. При этом стоит иметь в виду, что даже в языке С не гарантируется, что приведение NULL к целочисленному типу дает целочисленное значение 0.

READ ALSO
Не хочет инициализироваться поток

Не хочет инициализироваться поток

Каждый параметр абсолютно верен, но почему-то вызывается exception в std::invokeКод: Вызываемая функция:

129
Отключить возможность перемещения Confirm Dialog мышью

Отключить возможность перемещения Confirm Dialog мышью

Всем привет, Хочу сделать так, чтобы Confirm dialog (окно) невозможно было перемещать мышью

115
Программа не заканчивает свою работу

Программа не заканчивает свою работу

Задали нам задачу, сделать игру с нахождением одинаковых карточек, наверняка все игралиТы кликаешь на одну карточку, потом на другую и, если...

135
Ошибка при компиляции веб-приложения на Grails 2.5.0

Ошибка при компиляции веб-приложения на Grails 2.5.0

Драстипроект по разработке веб приложения был написан 3 года назад другой командой

112