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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
#1

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

30.01.2012, 14:54. Просмотров 572. Ответов 13
Метки нет (Все метки)

Пример:

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 это одно и тоже ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 14:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос про Swich (C++):

Вопрос про память... - C++
Вот скажите пожалуйста в чем разница между int *p = new int; *p = 10; и int n = 10; не могу понять )

Вопрос про наследование. - C++
Добрый день всем! Возможно ли создать производный класс в который будут помещены 2 объекта базового класса с возможностью...

Вопрос про консоль - C++
День добрый. Я новичок в программировании и пишу консольную программу.Хотелось бы узнать у более опытных товарищей. Как сделать так,...

Вопрос про mkdir - C++
У меня уже есть идея реализации но мне кажется есть способ проще! И так к делу вот часть кода точнее строчка WinExec("cmd /c mkdir...

Вопрос про friend - C++
Вот мой код. #include<iostream> using namespace std; class Bottle; class Carton { public: Carton(const Bottle& xBottle) {...

Вопрос про ф-ию mul - C++
Расскажите пожалуйста про ф-ию mul, перегружаемую в классе. Что она делает?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dimcoder
Полярный
463 / 435 / 68
Регистрация: 11.09.2011
Сообщений: 1,135
30.01.2012, 14:56 #2
Цитата Сообщение от iluxa1810 Посмотреть сообщение
По идее он должен выполняться ,если i ровнялась бы
0
Не-а. Для этого и придумали break; чтобы последующие операторы не выполнялись.
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 15:06  [ТС] #3
dimcoder,
т.е получается,что если оператора break нет и где-то в центре swicth найдено совпадение,то после выполнения группы операторов ,switch'у становится пофиг на условия case и идет выполнение всего подряд ,что идет за последним выполненным оператором case ?
0
dimcoder
Полярный
463 / 435 / 68
Регистрация: 11.09.2011
Сообщений: 1,135
30.01.2012, 15:10 #4
iluxa1810, так и есть. Пруф:
http://liveworkspace.org/code/4bcce1...39679115971a42
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 15:12  [ТС] #5
dimcoder,
Еще вопрос,а cin.get и getline это одно и тоже ?
0
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 15:13 #6
Цитата Сообщение от iluxa1810 Посмотреть сообщение
dimcoder,
Еще вопрос,а cin.get и getline это одно и тоже ?
.нед.
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 15:24  [ТС] #7
co6ak,
cin.get берет 1 символ ,а getline строку ?
0
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 15:30 #8
Цитата Сообщение от iluxa1810 Посмотреть сообщение
co6ak,
cin.get берет 1 символ ,а getline строку ?
.Да!.
1
dimcoder
Полярный
463 / 435 / 68
Регистрация: 11.09.2011
Сообщений: 1,135
30.01.2012, 15:33 #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
2
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 16:06 #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
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
30.01.2012, 16:13  [ТС] #11
co6ak, почему так ?
0
dimcoder
Полярный
463 / 435 / 68
Регистрация: 11.09.2011
Сообщений: 1,135
30.01.2012, 16:17 #12
Цитата Сообщение от co6ak Посмотреть сообщение
а9710а97
у меня тоже самое

co6ak, пояснишь?
0
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 16:45 #13
дык поток то не пустой. исмвол \n тоже считается
возвращает get() int-овское значение символа введенного. в данном случае a - 97. 10 - enter
весьма вредная функция, этот cin.get()
1
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
30.01.2012, 18:19 #14
Цитата Сообщение от iluxa1810 Посмотреть сообщение
dimcoder,
т.е получается,что если оператора break нет и где-то в центре swicth найдено совпадение,то после выполнения группы операторов ,switch'у становится пофиг на условия case и идет выполнение всего подряд ,что идет за последним выполненным оператором case ?
Почитай раздел 6 по ссылке Неочевидные ответы на простые вопросы
Может появится ясность
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2012, 18:19
Привет! Вот еще темы с ответами:

Вопрос про палиндромы - C++
Такая вот задачка по програмированию С++: Ввести рядок символов и составить масив слов-палиндромов (читаются одинаково с права на лево и...

Вопрос про реестр - C++
Здравствуйте господа програмисты!У меня есть программа,честно сознаюсь скачал с интернета и переделал не много,поэтому не доконца...

вопрос про скобки - C++
Здравствуйте, получил задание написать программу, смысл которой заключается в умножении матрицы на столбец. Матрица статическая, функция...

Вопрос про указатели - C++
#include &lt;iostream.h&gt; int main() { int x; int *Pointer; pointer = &amp;x; cout &lt;&lt; pointer; cout &lt;&lt; *ponter; return 0; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.01.2012, 18:19
Ответ Создать тему
Опции темы

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