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

ой версии (ях) стандартов C (если таковые имеются) четко определены следующие?

void foo(void) {
    char *nullPtr = NULL;
    &*nullPtr;
}

Обратите внимание, что я не присваиваю результат чему-либо - вторая строка - это простое утверждение.

Этотдолжен быть вопросом с очевидным ответом, но (как это, кажется, случается слишком часто по таким вопросам) я слышал так же, как многие люди говорят, что ответ «явно не определен» как «явно определен».

На довольно связанной ноте, что относительно следующего? Долженfoo произвести чтение с?

extern volatile char c;

void bar(void) {
    volatile char *nonnullptr = &c;
    &*nonnullptr;
}

(C ++ версия того же вопроса:Является ли & * NULL хорошо определенным в C ++?)

Ответы на вопрос(1)

Ваш ответ на вопрос