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

Вопрос про Swich - C++

Восстановить пароль Регистрация
 
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 14:54     Вопрос про Swich #1
Пример:

int i=2; switch (i) { case 1: i += 2; case 2: i *= 3; case 0: i /= 2; case 4: i -= 5; default: ; }
Выполнение оператора switch начинается с оператора, помеченного case 2. Таким образом, переменная i получает значение, равное 6, далее выполняется оператор, помеченный ключевым словом case 0, а затем case 4, переменная i примет значение 3, а затем значение -2. Оператор, помеченный ключевым словом default, не изменяет значения переменной.

Вопрос:Это ошибка или нет,что выполняется Case 0 ? По идее он должен выполняться ,если i ровнялась бы
0

Добавлено через 5 минут
Еще вопрос,а cin.get и getline это одно и тоже ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 14:54     Вопрос про Swich
Посмотрите здесь:

Вопрос про указатели C++
C++ Вопрос про std::
C++ Вопрос про файлы
Вопрос про конструктор C++
C++ Вопрос про классы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
30.01.2012, 14:56     Вопрос про Swich #2
Цитата Сообщение от iluxa1810 Посмотреть сообщение
По идее он должен выполняться ,если i ровнялась бы
0
Не-а. Для этого и придумали break; чтобы последующие операторы не выполнялись.
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 15:06  [ТС]     Вопрос про Swich #3
dimcoder,
т.е получается,что если оператора break нет и где-то в центре swicth найдено совпадение,то после выполнения группы операторов ,switch'у становится пофиг на условия case и идет выполнение всего подряд ,что идет за последним выполненным оператором case ?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
30.01.2012, 15:10     Вопрос про Swich #4
iluxa1810, так и есть. Пруф:
http://liveworkspace.org/code/4bcce1...39679115971a42
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 15:12  [ТС]     Вопрос про Swich #5
dimcoder,
Еще вопрос,а cin.get и getline это одно и тоже ?
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 15:13     Вопрос про Swich #6
Цитата Сообщение от iluxa1810 Посмотреть сообщение
dimcoder,
Еще вопрос,а cin.get и getline это одно и тоже ?
.нед.
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 15:24  [ТС]     Вопрос про Swich #7
co6ak,
cin.get берет 1 символ ,а getline строку ?
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 15:30     Вопрос про Swich #8
Цитата Сообщение от iluxa1810 Посмотреть сообщение
co6ak,
cin.get берет 1 символ ,а getline строку ?
.Да!.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
30.01.2012, 15:33     Вопрос про Swich #9
Цитата Сообщение от iluxa1810 Посмотреть сообщение
co6ak,
cin.get берет 1 символ ,а getline строку ?
АгА:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    char c = cin.get();
    char s[30];
    cin.getline(s, '\n');
    cout << c << endl << s << endl;
    system("PAUSE > NULL");
    return EXIT_SUCCESS;
}
+
1 особенность
C++
1
2
cin >> s;
cout << s;
ввод hello world
вывод hello

а
C++
1
2
cin.getline(s);
cout << s;
ввод hello world
вывод hello world
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 16:06     Вопрос про Swich #10
тогда еще вдогонку касяк гет-а
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <windows.h>
int main()
{
    std::cout << std::cin.get(); 
    std::cout << std::cin.get();
    std::cout << std::cin.get();
    system("pause");
}
если вводить, допустим "а", то ввод будет 2 раза, а не 3. + мусор
будет что-то типа а9710а97
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 16:13  [ТС]     Вопрос про Swich #11
co6ak, почему так ?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
30.01.2012, 16:17     Вопрос про Swich #12
Цитата Сообщение от co6ak Посмотреть сообщение
а9710а97
у меня тоже самое

co6ak, пояснишь?
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 16:45     Вопрос про Swich #13
дык поток то не пустой. исмвол \n тоже считается
возвращает get() int-овское значение символа введенного. в данном случае a - 97. 10 - enter
весьма вредная функция, этот cin.get()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2012, 18:19     Вопрос про Swich
Еще ссылки по теме:

C++ Вопрос про наследование.
[C++] Вопрос про ввод C++
Вопрос про табуляцию в C++ C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
30.01.2012, 18:19     Вопрос про Swich #14
Цитата Сообщение от iluxa1810 Посмотреть сообщение
dimcoder,
т.е получается,что если оператора break нет и где-то в центре swicth найдено совпадение,то после выполнения группы операторов ,switch'у становится пофиг на условия case и идет выполнение всего подряд ,что идет за последним выполненным оператором case ?
Почитай раздел 6 по ссылке Неочевидные ответы на простые вопросы
Может появится ясность
Yandex
Объявления
30.01.2012, 18:19     Вопрос про Swich
Ответ Создать тему
Опции темы

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