Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Messian
0 / 0 / 1
Регистрация: 06.02.2014
Сообщений: 28
#1

Пропуск условия if внутри switch - C++

02.08.2015, 14:29. Просмотров 729. Ответов 11
Метки нет (Все метки)

В общем я как-то подвис, и не могу взять в толк в чем проблема.В свитче по сути if должен же работать.

Помогите по возможности
Собственно укороченная тест версия.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int g = 1;
    int key = 87;
    bool run = false;
    bool up;
    switch (g)
    {
    case 1:
    
        if ((key == 87) && (!run))//условие не проверяется сразу переходит ниже.
            up == true;
        up = true;
 
        break;
    
    }
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2015, 14:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пропуск условия if внутри switch (C++):

Множественные условия выбора switch
В моем коде много case-ов я бы хотел их сократить путем логического умножения...

Вычислить в зависимости от условия (switch)
что то затупил, никак не могу понять как сделать, на самом деле мне очень...

gets внутри switch
Подскажите, почему не получается осуществить gets для ввода char внутри данной...

Объявление внутри switch
Почему, когда закомментирваны фигурные скобки не получается объявить переменную...

Объявление переменных внутри блока switch
#include <iostream> int main() { int choice = 2; ...

Внутри switch ошибка Case bypasses initialization of a local variable
Компилятор не устраивает case 3, там ввод массива автоматически , в чем ошибка...

11
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
02.08.2015, 14:36 #2
А что конкретно тебя не устраивает в работе данного фрагмента? Ну и к слову в 15-й строке вместо "=" использовано "=="
0
Ferrari F1
02.08.2015, 14:42
  #3

Не по теме:

Messian, прогай на msvs 2015, устал уже видить эти безобразные строчки

C++
1
2
3
#include "stdafx.h" // какая-то левая библиотека
 
int _tmain(int argc, _TCHAR* argv[]) // какой-то непонятный тип, на кой черт тебе аргументы ком. строки?

0
Messian
0 / 0 / 1
Регистрация: 06.02.2014
Сообщений: 28
02.08.2015, 14:45  [ТС] #4
Мда, пора на покой блин. Смысл фрагмента, что if использован внутри case и пропускается отладчиком, а я завис из-за 15 строки
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
02.08.2015, 14:50 #5
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

Цитата Сообщение от Messian Посмотреть сообщение
Смысл фрагмента, что if использован внутри case и пропускается отладчиком
Скорее всего компилятор увидел, что условие if'а - константно, а операция под if'ом (up == true) является бессмысленной (о чём наверняка было выдано предупреждение) и, как итог, попросту удалил строки 14 и 15 (в том смысле, что не стал для них строить код)
0
ОгУрЕц
Заблокирован
02.08.2015, 20:40 #6
Цитата Сообщение от Messian Посмотреть сообщение
if ((key == 87) && (!run))//условие не проверяется сразу переходит ниже.
* * * * * * up == true;
== означает логическое cравнение а не присваивание следует записать
C++
1
2
3
4
5
6
7
case 1:
    
        if ((key == 87) && (!run))//условие не проверяется сразу переходит ниже.
            up = true;//заменить == на =
        up = true;
 
        break;
Если ты проходил дебагом, то из за отсутствия действий up == true твоё условие воспринималось как if ((key == 87) && (!run));
Погляди код ниже.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
 
int main(int argc, char* argv[])
{
    int g = 1;
    int key = 87;
    bool run = false;
    bool up;
    switch (g)
    {
    case 1:
    
        if ((key == 87) && (!run)){//условие не проверяется сразу переходит ниже.
            up = true;
            cout<<"Ya RABOTAU!!!"<<endl;
        }
        up = true;
 
        break;
    
    }
    return 0;
}

http://codepad.org/Y2eqD98g
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
02.08.2015, 20:41 #7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
// какая-то левая библиотека
предкомпилированный заголовок
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
// какой-то непонятный тип, на кой черт тебе аргументы ком. строки?
https://msdn.microsoft.com/en-us/library/office/cc842072.aspx
0
ОгУрЕц
02.08.2015, 20:46
  #8

Не по теме:

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
какой-то непонятный тип, на кой черт тебе аргументы ком. строки?
- выдели интересующие тебя переменную или функцию, нажми правую кнопку мыши и в контекстном меню выбери Go To Declaration

0
Ferrari F1
02.08.2015, 22:04
  #9

Не по теме:

Цитата Сообщение от ОгУрЕц Посмотреть сообщение
выдели интересующие тебя переменную или функцию, нажми правую кнопку мыши и в контекстном меню выбери Go To Declaration
А мне заняться шоли нечем?)

Добавлено через 8 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
предкомпилированный заголовок
Кроесмах, ты чтоли стоишь в защиту использования этих крокозябр?
Зачем ТС вобще использовать этот тчар и тмаин вместо обычных чар и маин для решения данной задачи?
И вобще в его случае не имеет смысла присутствие аргументов командой строки.

0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
02.08.2015, 22:06 #10
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Зачем ТС вобще использовать этот тчар и тмаин
затем, что Visual Studio создает это все в проекте автоматом и его не спрашивает.
0
Ferrari F1
02.08.2015, 22:08
  #11

Не по теме:

Kerry_Jr, значит это фальшивая вижуал студия =)
Я когда создаю пустой проект, то этой ереси не возникает

0
Kerry_Jr
02.08.2015, 22:10     Пропуск условия if внутри switch
  #12

Не по теме:

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Я когда создаю пустой проект
А попробуй непустой проект "Консольное приложение Win32" создать.

0
02.08.2015, 22:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2015, 22:10
Привет! Вот еще темы с ответами:

Switch case внутри switch case
Привет всем! Нужна помощь. Пишу калькулятор с консольным меню. Так вот,...

Пропуск пробела С++
При добавлении книги когда пишешь допустим &quot;Дуб зелёный&quot; - через пробел, то...

Электронный пропуск
Уважаемый пользователи форума, может кто может помочь? Необходимо разработать...

Пропуск пробелов
Здравствуйте! У меня программа шифрования. Возникла такая проблема: Если мы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru