0 / 0 / 1
Регистрация: 06.02.2014
Сообщений: 28
1

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

02.08.2015, 14:29. Показов 3270. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2015, 14:29
Ответы с готовыми решениями:

Рефакторинг switch внутри switch в static классе
Добрый день. Подскажите, как корректно обойти конструкцию switch case внутри switch case в...

Внутри проверки условия не производится ещё одна проверка условия
Как задумывалось - при нажатии на джойстик просто должны были остановится движки, но если при...

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

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

11
Evg
Эксперт CАвтор FAQ
21246 / 8261 / 637
Регистрация: 30.03.2009
Сообщений: 22,606
Записей в блоге: 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
0 / 0 / 1
Регистрация: 06.02.2014
Сообщений: 28
02.08.2015, 14:45  [ТС] 4
Мда, пора на покой блин. Смысл фрагмента, что if использован внутри case и пропускается отладчиком, а я завис из-за 15 строки
0
Evg
Эксперт CАвтор FAQ
21246 / 8261 / 637
Регистрация: 30.03.2009
Сообщений: 22,606
Записей в блоге: 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
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 1
02.08.2015, 20:41 7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
// какая-то левая библиотека
предкомпилированный заголовок
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
// какой-то непонятный тип, на кой черт тебе аргументы ком. строки?
https://msdn.microsoft.com/en-... 42072.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
Эксперт PHP
3101 / 2586 / 1219
Регистрация: 14.05.2014
Сообщений: 7,231
Записей в блоге: 1
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2015, 22:10

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

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

Java игнорирует IF внутри SWITCH
Всем доброго времени суток! Пишу программу, внутри SWITCH'а вставил IF, который до вставки в...

Выход из функции внутри switch
Здавствуйте Решала задачу, подсчет очков команды из всех сыгранных матчей (первая цифра в строке...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru