Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор , 
V
    Опции темы
vinter
Дата 6.6.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



привет всем,
сегодня увидел такой код
Код

while(*src) *dest=*src, ++src, ++dest;

ни разу не задумовался о запятых, и решил что этот код неверен, я ошибся. Теперь внимание вопрос, нафига это сделано? и второй вопрос зачем тогда нужны ; , если почти все заменяют запятые в том числе и тело цикла?


--------------------
Мой блог
PM MAIL WWW   Вверх
Peter
Дата 6.6.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Цитата(vinter @  6.6.2008,  14:46 Найти цитируемый пост)
нафига это сделано?

С этим вопросом - к разработчикам стандарта Си++.

Цитата(vinter @  6.6.2008,  14:46 Найти цитируемый пост)
зачем тогда нужны ; , если почти все заменяют запятые в том числе и тело цикла?

Точка с запятой указывает конец оператора. А запятые объединяют выражения в один оператор. Того же самого эффекта можно было бы достичь, если написать
Код
while(*src) {*dest=*src; ++src; ++dest;}



--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Любитель
Дата 6.6.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Запятые нужны в си, в первую очередь для форов (ну, не то, чтоб нужны - но удобно). В С++ - это, во-первых, наследие. Но кроме того есть перегрузка операторов, потому находятся и другие применения. Например, boost::asign.


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 7.6.2008, 00:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Запятые также иногда удобны в условиях конструкций if и while.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
chipset
Дата 7.6.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



А ещё запятые можно перегружать  smile 


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
bronislav
Дата 8.6.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: нет
Всего: 3



Цитата(chipset @  7.6.2008,  20:24 Найти цитируемый пост)
А ещё запятые можно перегружать 

Специально для этого их и придумали  smile 


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Alek86
Дата 9.6.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(JackYF @  7.6.2008,  00:33 Найти цитируемый пост)
Запятые также иногда удобны в условиях конструкций if и while.

можно пример, когда они удобны?
ато я так сразу представить не могу


--------------------
user posted image    user posted image
PM MAIL   Вверх
Fazil6
Дата 9.6.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(bronislav @  8.6.2008,  21:30 Найти цитируемый пост)
Специально для этого их и придумали

совсем не для этого. Семантика оператора "," меняется при перегрузке и поэтому не рекомендуется его перегружать. Тудаже относится и перегрузка && и ||
PM MAIL   Вверх
Lazin
Дата 9.6.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



да вроде-бы можно перегружать, но только для своих классов...
PM MAIL Skype GTalk   Вверх
Fazil6
Дата 9.6.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Lazin @  9.6.2008,  11:21 Найти цитируемый пост)
да вроде-бы можно перегружать, но только для своих классов... 

перегружать можно, но поведение его будет очень сильно отличаться. Реализовать его семантику при перегрузке невозможно, поэтому результат этого перегруженного оператора будет очень удивительным для пользователя класса. 
Вы ведь не будете перегружать "+" так чтобы он в итоге реализовывал "-"...

Добавлено через 9 минут и 15 секунд
вот подобный случай обсуждался

PM MAIL   Вверх
Любитель
Дата 9.6.2008, 12:42 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Fazil6, семантику менять - это нормально. Иногда Пример я уже привёл (boost::assign).


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 9.6.2008, 17:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Alek86 @  9.6.2008,  08:40 Найти цитируемый пост)
можно пример, когда они удобны?
ато я так сразу представить не могу

Код

std::vector<std::string> buffers;
std::string s;
while (std::getline(std::cin, s), !std::cin.eof())
{
  buffers.push_back(s);
}



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 9.6.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Fazil6 @  9.6.2008,  11:51 Найти цитируемый пост)
Реализовать его семантику при перегрузке невозможно

почему?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Alek86
Дата 9.6.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



JackYF, конечно спорно
ради одной строчки так (имхо) загрязнять читаемость
наверное, к этом нужно привыкнуть..........


--------------------
user posted image    user posted image
PM MAIL   Вверх
Fazil6
Дата 9.6.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(MAKCim @  9.6.2008,  17:39 Найти цитируемый пост)
почему? 

потому, что нужно обеспечить порядок вычисления операндов
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0906 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.