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

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

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

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

30.01.2012, 14:54. Просмотров 569. Ответов 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 это одно и тоже ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 14:54     Вопрос про Swich
Посмотрите здесь:

вопрос про указателей - C++
вот напр эта строка int *m=new int; это как я понял создается указатель?тогда что такое new int?

Вопрос про указатели - C++
char *a = "s"; 1. Выделяется место в памяти 2. В это место записывается s 3. Указателю a приваивают адрес памяти где храниться s ...

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

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

Вопрос про табуляцию в C++ - C++
Символ табуляции он одновременно переносит курсор на след.строку и выравнивает строки?

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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
Кошковед
407 / 500 / 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
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 15:30     Вопрос про Swich #8
Цитата Сообщение от iluxa1810 Посмотреть сообщение
co6ak,
cin.get берет 1 символ ,а getline строку ?
.Да!.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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
Кошковед
407 / 500 / 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
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
30.01.2012, 16:17     Вопрос про Swich #12
Цитата Сообщение от co6ak Посмотреть сообщение
а9710а97
у меня тоже самое

co6ak, пояснишь?
co6ak
Кошковед
407 / 500 / 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++
Вот скажите пожалуйста в чем разница между int *p = new int; *p = 10; и int n = 10; не могу понять )

Вопрос про конструктор - C++
Обязательно ли делать конструктор по умолчанию для класса, экземпляр которого входит в другой класс? Например так: class Class2 ...

Вопрос про __function - C++
вопрос глупый, но все же: зачем в названии функциях пишут две __ - void __Plus(int a); - пример int __Display(int b) это для красоты...

Вопрос про классы - C++
Такой пример. Базовый класс First, и два производных от него класса Second и Third. First*ar={new First(параметры),new Second(параметры),...


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

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

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