Другие языки программирования и технологии

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

Maxim Andriyanov
Maxim Andriyanov
2 387
Операция "запятая" обычно используется в двух случаях:

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

2. Внутри выражения - исключительно для того, чтобы уместить пачку вычислений в одной строке - вместо того, чтобы разбить такое выражение на несколько более простых и понятных. Трюкачество, проходящее по разряду "говнокод".
Э.
Эльнар... ...
92 462
Лучший ответ
Пётр Федосов 2,), вообще то, это, шифрование, специально, так задуманное, а, не, гавнокодерство.
Талгат Н здравствуйте, помогите пожалуйста с задачей на python https://otvet.mail.ru/question/223545091
Maxim Andriyanov Извините. Можете помочь?
Здесь есть ли оператор "запятая":https://otvet.mail.ru/answer/1983785544/cid-324229170/ ?
Это полезная операция, часто заметно сокращает программу.
Например, x>0?a:b=5 присвоит в зависимости от значения х пятерку или а, или b
ДС
Димон Суслов
68 538
Maxim Andriyanov Это у Вас тернарный оператор же.
Димон Суслов Точно, когда писал ответ, забыл вопрос, он ушел из вида на экране :(
Димон Суслов Тогда, например, while(cin(x),x>0),,,
Димон Суслов Тьфу, отвлекают...
Тогда, например, while(cin>>x,x>0),,,
Разделитель
Юрий Равчеев
Юрий Равчеев
84 820
Не встречал на практике.
Оно точно переопределяется?
Если да, то нужен затем же, зачем нужен оператор "+".
Ты же можешь переопределить оператор "+" так, чтобы он складывал вектора, например и возвращал (*this).
Так же и другой оператор с двумя параметрами можешь переопределить. Какая разница, что за оператор переопределяешь. Важно лишь число параметров.

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

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

d(b() (c))
d(b(),(c))
Magomed Amin
Magomed Amin
8 797
Maxim Andriyanov Вообще-то есть запятая и оператор "запятая" В C++.
У Вас в примере это просто запятая !
Он почти никогда не используется, но нужен когда надо в одно выражение поместить несколько. Например, "for(int i =0; i < n; ++i, ++j);"
Magomed Amin У меня чаще так:
for(int i = 0, n = array.count(); i < n; i++) { ...}