Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Зачем нужен оператор "запятая" в С++ ?

besides Мастер (2385), закрыт 4 года назад
Лучший ответ
Андрей Высший разум (480490) 4 года назад
Операция "запятая" обычно используется в двух случаях:

1. В заголовке цикла for - когда надо произвести несколько инициализаций и/или модифицировать несколько переменных по завершении итерации. Здесь использовании операции как-то оправдать ещё можно.
for (i = 0, j = n; i < j; ++i, --j) - вполне типичный код для обработки массива с двух сторон (определение палиндрома, реверс массива и т. п.).

2. Внутри выражения - исключительно для того, чтобы уместить пачку вычислений в одной строке - вместо того, чтобы разбить такое выражение на несколько более простых и понятных. Трюкачество, проходящее по разряду "говнокод".
Леша ФадеевМастер (1139) 4 года назад
2,), вообще то, это, шифрование, специально, так задуманное, а, не, гавнокодерство.
Андрей Высший разум (480490) Леша Фадеев, Готовый код запутывают - при необходимости - специальные утилиты-обфускаторы. А исходный код, написанный разработчиком, должен быть максимально понятен другому разработчику.
андрей гаакУченик (11) 4 года назад
здравствуйте, помогите пожалуйста с задачей на python https://otvet.mail.ru/question/223545091
besidesМастер (2385) 4 года назад
Извините. Можете помочь?
Здесь есть ли оператор "запятая":https://otvet.mail.ru/answer/1983785544/cid-324229170/ ?
Андрей Высший разум (480490) besides, Нет, в коде Алексея нет операции "запятая". Есть только вызов разных версий функции d.
Остальные ответы
Алексей Шаяхметов Мыслитель (8803) 4 года назад
Не встречал на практике.
Оно точно переопределяется?
Если да, то нужен затем же, зачем нужен оператор "+".
Ты же можешь переопределить оператор "+" так, чтобы он складывал вектора, например и возвращал (*this).
Так же и другой оператор с двумя параметрами можешь переопределить. Какая разница, что за оператор переопределяешь. Важно лишь число параметров.

Или вообще зачем нужна запятая безотносительно переопределения.
Может, и не нужна.
Пока не пришло в голову примера, где бы запятую нельзя было бы заменить пробелом.

Думаю...
Вот пример из C++, где все неоднозначно в случае, если есть 2 функции d - одна с одним аргументом, другая с двумя; и есть функция b, которая возвращает класс с переопределенным оператором "()" и есть функция b, которая возвращает, допустим, int.

d(b() (c))
d(b(),(c))
besidesМастер (2385) 4 года назад
Вообще-то есть запятая и оператор "запятая" В C++.
У Вас в примере это просто запятая !
Алексей Шаяхметов Мыслитель (8803) besides, говорю, ни разу не встречал "operator,(a,b)"
Alexander Lyashuk Мыслитель (5596) 4 года назад
Он почти никогда не используется, но нужен когда надо в одно выражение поместить несколько. Например, "for(int i =0; i < n; ++i, ++j);"
Алексей ШаяхметовМыслитель (8803) 4 года назад
У меня чаще так:
for(int i = 0, n = array.count(); i < n; i++) { ...}
Krab Bark Искусственный Интеллект (299975) 4 года назад
Это полезная операция, часто заметно сокращает программу.
Например, x>0?a:b=5 присвоит в зависимости от значения х пятерку или а, или b
besidesМастер (2385) 4 года назад
Это у Вас тернарный оператор же.
Krab BarkИскусственный Интеллект (299975) 4 года назад
Точно, когда писал ответ, забыл вопрос, он ушел из вида на экране :(
Krab BarkИскусственный Интеллект (299975) 4 года назад
Тогда, например, while(cin(x),x>0),,,
Krab BarkИскусственный Интеллект (299975) 4 года назад
Тьфу, отвлекают...
Тогда, например, while(cin>>x,x>0),,,
Похожие вопросы