Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Messian
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 10
02.08.2015, 14:29     Пропуск условия if внутри switch #1
В общем я как-то подвис, и не могу взять в толк в чем проблема.В свитче по сути 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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2015, 14:29     Пропуск условия if внутри switch
Посмотрите здесь:

C++ gets внутри switch
C++ Объявление переменных внутри блока switch
C++ Пропуск пробела в строке
C++ Пустые поля. пропуск функций
Вычислить в зависимости от условия (switch) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
02.08.2015, 14:36     Пропуск условия if внутри switch #2
А что конкретно тебя не устраивает в работе данного фрагмента? Ну и к слову в 15-й строке вместо "=" использовано "=="
Ferrari F1
02.08.2015, 14:42
  #3

Не по теме:

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

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

Messian
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 10
02.08.2015, 14:45  [ТС]     Пропуск условия if внутри switch #4
Мда, пора на покой блин. Смысл фрагмента, что if использован внутри case и пропускается отладчиком, а я завис из-за 15 строки
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
02.08.2015, 14:50     Пропуск условия if внутри switch #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Messian Посмотреть сообщение
Смысл фрагмента, что if использован внутри case и пропускается отладчиком
Скорее всего компилятор увидел, что условие if'а - константно, а операция под if'ом (up == true) является бессмысленной (о чём наверняка было выдано предупреждение) и, как итог, попросту удалил строки 14 и 15 (в том смысле, что не стал для них строить код)
ОгУрЕц
Заблокирован
02.08.2015, 20:40     Пропуск условия if внутри switch #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
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 768
Регистрация: 27.09.2012
Сообщений: 16,849
Записей в блоге: 2
Завершенные тесты: 1
02.08.2015, 20:41     Пропуск условия if внутри switch #7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
// какая-то левая библиотека
предкомпилированный заголовок
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
// какой-то непонятный тип, на кой черт тебе аргументы ком. строки?
https://msdn.microsoft.com/en-us/lib.../cc842072.aspx
ОгУрЕц
02.08.2015, 20:46
  #8

Не по теме:

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

Ferrari F1
02.08.2015, 22:04
  #9

Не по теме:

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

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

Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 575
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
02.08.2015, 22:06     Пропуск условия if внутри switch #10
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Зачем ТС вобще использовать этот тчар и тмаин
затем, что Visual Studio создает это все в проекте автоматом и его не спрашивает.
Ferrari F1
02.08.2015, 22:08
  #11

Не по теме:

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

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

C++ Пропуск строки в файле
Электронный пропуск C++
C++ Внутри switch ошибка Case bypasses initialization of a local variable

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

Или воспользуйтесь поиском по форуму:
Kerry_Jr
02.08.2015, 22:10     Пропуск условия if внутри switch
  #12

Не по теме:

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

Yandex
Объявления
02.08.2015, 22:10     Пропуск условия if внутри switch
Ответ Создать тему
Опции темы

Текущее время: 11:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru