Почему возникает ошибка в switch-case?
Ошибка: "значение метки случая уже есть в данном переключателе в строке
switch (str[i])
{
case ')' || '}' || ']':
if (st.empty())
{
count = i + 1;
return false;
}
else if ((str[i] == ')' && st.top() == '(') || (str[i] == '}' && st.top() == '{') || (str[i] == ']' && st.top() == '['))
{
st.pop();
}
break;
case '(' || '{' || '[':
st.push(str[i]);
count++;
break;
На первой картинке ошибка ссылается на строку во второй картинке
Ответы (2 шт):
Автор решения: AlexGlebe
→ Ссылка
Запись ')' || '}' || ']' возвращает всегда булевое значение, то-есть правду или в числах 1. И switch сравнивает букву str[i] всегда только с одним числом, то-есть с результатом выражения, в вашем случае с единицей или буквой с кодом один : '\01'.
Чтобы выполнялся один код на разных аргументах запись должна быть другой :
case ')' :
case '}' :
case ']' :
код
break ;
Автор решения: George
→ Ссылка
в case дублируется значение типа bool. case: ('(' || '{' || '[') и case: (')' || '}' || ']')
error: duplicate case value

