Здравствуйте, <Аноним>, Вы писали:
А>VS C++ v6.0 пропустил без проблем, все работает.Возникает риторический вопрос: как-так ?
Запятая — это, по сути, ещё одна операция. Результат этой операции (точнее операций, так как может быть несколько выражений через запятые) — значение последнего выражения после выполенения всех выражений, разделённых запятыми, слева направо. То есть такой код:
int i, j;
j = (i = 3, i++, i*=2);
cout << j << endl;
выведет 8.
Кстати, ещё можно делать так:
i = j = 2;
Не в тему, конечно, но может пригодится...
... << RSDN@Home 1.1.3 stable silent>>
Re[3]: х=1,у=1; Теперь можно присваивать через запятую ?
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Оффтоп L_L>Можно писать даже страшнее L_L>
L_L>for(class A{int i_; int j_;A(){std::cout<<"KyKy\n";}};;);
L_L>
тоже offtopic
я хоть и люблю C++ но не могу не признать, что сам язык с точки зрения понимания просто ужасен
можно создать чудовищные конструкции и кто-то другой будет долго думать что-же это такое
Re[4]: х=1,у=1; Теперь можно присваивать через запятую ?
_>тоже offtopic _>я хоть и люблю C++ но не могу не признать, что сам язык с точки зрения понимания просто ужасен _>можно создать чудовищные конструкции и кто-то другой будет долго думать что-же это такое
эээ, так если нарочно не изощряться (допустим, определяя дикие типы функций без тайпдефов), то вроде все нормально. А в учебниках — вообще все мило.
Of course, the code must be complete enough to compile and link.
Re[2]: х=1,у=1; Теперь можно присваивать через запятую ?
От:
Аноним
Дата:
26.05.04 14:17
Оценка:
Здравствуйте, jazzer, Вы писали:
J>можно писать даже еще страшнее: J>
You will always get what you always got
If you always do what you always did
Re[4]: х=1,у=1; Теперь можно присваивать через запятую ?
От:
Аноним
Дата:
26.05.04 15:01
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
А>>что получим?
L_L>'cout' undefined identifier ???
#include <iostream>
using namespace std;
int main()
{
int a[5] = {1, 2, 3, 4, 5};
int i = 1;
int j = 3;
int k = 4;
cout << a[i, j, k] << endl;
return 0;
}
если угодно
вопрос-то был про запятую...
Re[3]: х=1,у=1; Теперь можно присваивать через запятую ?
a[i, j, k] то-же самое что и a[k], берется результат поледнего вычисления
чтоб еще запутать можно написать что-то вроде
cout << a[++i, j+1, (k = j+2)]
Re[4]: х=1,у=1; Теперь можно присваивать через запятую ?
От:
Аноним
Дата:
27.05.04 06:21
Оценка:
J>Ну, и не забываем о том, что этот оператор можно перегрузить и потом всех им пугать
Да, Бьярн вроде в DE писал, что ',' добавили постолько поскольку. И она никому не нужна перегруженная. А тут недавно на форуме кто-то что-то интересное и действительно нужное с запятой делал.
Re[5]: х=1,у=1; Теперь можно присваивать через запятую ?
Здравствуйте, Аноним, Вы писали:
J>>Ну, и не забываем о том, что этот оператор можно перегрузить и потом всех им пугать :)
А>Да, Бьярн вроде в DE писал, что ',' добавили постолько поскольку. И она никому не нужна перегруженная. А тут недавно на форуме кто-то что-то интересное и действительно нужное с запятой делал.
поскольку запятая в естественных языках используется для перечисления элементов, то и в С++ ее надо перегружать так же, как и, скажем, operator<<, который тоже образует цепочки.
Т.е. для некоторых типов T и U
T& operator,(T& t, U u);
Тогда, скажем, для U=int и какого-нть T=fill_vector (который будет заполнять свой внутренний std:vector<int> и будет иметь оператор приведения к std::vector<int>), можно будет написать нечто вроде