История изменений
Исправление firkax, (текущая версия) :
Про баг в головах стандартописателей я полностью согласен, однако в данном случае компилятор не только творить дичь на ровном месте, но ещё и нарушает тот самый стандарт, который авторы шланга так чтят. В стандарте не сказано, что тайпкаст нулевой переменной к указателю должен давать NULL, соответственно NULL-оптимизация тут даже стандарт нарушает. Может ещё сравнить с (char*)123456 на всякий случай, а то вдруг они просто «догадались» что если адрес взят записанным в исходник числом то это что-то там нарушает и надо испортить бинарник (вместо выдачи ошибки на там не нравящуюся им конструкцию). Но что-то я подозреваю, что даже с (char*)1 вывод будет другой, а значит это именно NULL-оптимизация вопреки стандарту.
Поэтому я повторюсь ещё раз: Си – очень убогий язык. Если ты хочешь, чтобы вот таких выкрутасов с выкидыванием записи по нулевому адресу не было, тебе нужен другой язык, не Си.
Нет, Си норм язык, но не в реализации шланга.
Исходная версия firkax, :
Про баг в головах стандартописателей я полностью согласен, однако в данном случае компилятор не только творить дичь на ровном месте, но ещё и нарушает тот самый стандарт, который авторы шланга так чтят. В стандарте не сказано, что тайпкаст нулевой переменной к указателю должен давать NULL, соответственно NULL-оптимизация тут даже стандарт нарушает. Может ещё сравнить с (char*)123456 на всякий случай, а то вдруг они просто «догадались» что если адрес взят записанным в исходник числом то это что-то там нарушает и надо испортить бинарник (вместо выдачи ошибки на там не нравящуюся им конструкцию). Но что-то я подозреваю, что даже с (char*)1 вывод будет другой, а значит это именно NULL-оптимизация вопреки стандарту.