Как работает конструкция else else-if?
Допустим, у меня есть такой фрагмент кода:
for (int i = 0; i< 256; i++){
if (strcmp (dictionary[i]->value, prefix.value) == 0 ) break;
else if (i == (freeCode-1)){
...
}
}
Тут я хочу сравнить содержимое двух указателей на char и если они равны — выйти из цикла, а если они не равны, и цикл уже прошелся по всему массиву dictionary, то перейти к следующей ветке.
Знаю, что вопрос может показаться глупым, но мне же не надо писать:
for (int i = 0; i< freeCode; i++){
if (strcmp (dictionary[i]->value, prefix.value) == 0 ) break;
else if (strcmp (dictionary[i]->value, prefix.value) == 0 && i == (freeCode-1)){
...
}
}
Чтобы этот цикл отработал так, как мне нужно? В общем, вопрос в том, подставляет ли else if предыдущее условие?
Ответы (1 шт):
Чтобы этот цикл отработал так, как мне нужно? В общем, вопрос в том, подставляет ли
elseifпредыдущее условие?
Вы работаете в одной итерации, поэтому что для if, что для else в вашем примере значение strcmp (dictionary[i]->value, prefix.value) == 0 будет одинаковым на каждой итерации.
Тут я хочу сравнить содержимое двух указателей на char и если они равны — выйти из цикла, а если они не равны, и цикл уже прошелся по всему массиву dictionary, то перейти к следующей ветке.
Вы перейдете к else только когда сравнить содержимого вернет false, поэтому еще сравнивать не нужно.
else if (i == (freeCode-1)){..}