Не выполняется блок else в условии, когда if выдает false

void del(ListNode* ge_info, char* n) {
    Node* begin = ge_info->start_p;
    Node* cur_next = nullptr;
    Node* cur_prev = nullptr;
    do {
        if (!strcmp(n, begin->name)) {
            cur_next = begin->next;
            cur_prev = begin->prev;
            delete(begin);
            if (cur_prev != nullptr) {
                cur_prev->next = cur_next;
            } else {
                ge_info->start_p == cur_next;
            }

            if (cur_next != nullptr) {
                cur_next->prev = cur_prev;
            } else {
                ge_info->end_p == cur_prev;
            }
            break;
        }
        else {
            begin = begin->next;
        }
    } while (begin->next != ge_info->end_p);
}

if (cur_prev != nullptr) в отладке выдает false, тут все верно, раз if выдает false должен выполниться блок else, но он его пропускает и переходит сразу к if (cur_next != nullptr).


Ответы (1 шт):

Автор решения: vp_arth

ge_info->start_p == cur_next

Бессмысленная операция сравнения, компилятор может её смело удалить.

Думаю, что подразумевалось присваивание:

ge_info->start_p = cur_next

→ Ссылка