пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Оператор запятая

Как ни стран­но, про­грам­ми­сты ред­ко уде­ля­ют вни­ма­ние изу­че­нию и ис­поль­зо­ва­нию опе­ра­ции за­пя­тая (comma operator) в язы­ке C++. Да­вай­те посмот­рим, что это та­кое.

Пре­жде все­го, сле­ду­ет знать, что не вся­кая за­пя­тая в тек­сте ва­шей про­грам­мы яв­ля­етcя опе­ра­ци­ей. Пе­ре­чис­лим за­пя­тые, ко­то­рые яв­ля­ют­ся не опе­ра­ци­я­ми, а раз­де­ли­те­ля­ми:

·         За­пя­тые, раз­де­ляю­щие ар­гу­мен­ты мак­ро­под­ста­но­вок. При­мер:
#define MIN(a, b) (((a) < (b)) ? (a) : (b))

·         За­пя­тые, раз­де­ляю­щие ар­гу­мен­ты шаб­ло­нов. При­мер:
template<class A, class B> class C;

·         За­пя­тые, раз­де­ляю­щие ар­гу­мен­ты функ­ции (при её опре­де­ле­нии, опи­са­нии, и вы­зо­ве);

·         За­пя­тые, раз­де­ляю­щие пе­ре­мен­ные при опи­са­нии не­сколь­ких пе­ре­мен­ных:
int a, *b, c;

·         За­пя­тые, раз­де­ляю­щие вы­зо­вы кон­ст­рук­то­ров внут­рен­них объ­ек­тов. При­мер:
class C{int x; float y; public: C(void): x(9), y(2.5) { ; } };

·         За­пя­тые, раз­де­ляю­щие эле­мен­ты ини­циа­ли­за­то­ров мас­си­вов и ст­рук­тур:
int a[] = {1, 2, 3};

Осталь­ные за­пя­тые яв­ля­ют­ся опе­ра­ци­я­ми. Опе­ра­ция за­пя­тая име­ет са­мый низ­кий при­о­ри­тет сре­ди всех опе­ра­ций язы­ка C++. У этой опе­ра­ции есть 2 опе­ран­да (ле­вый и пра­вый). Вна­ча­ле вы­чис­ля­ет­ся ле­вый опе­ранд, за­тем пра­вый, а в ка­че­стве ре­зуль­та­та воз­вра­ща­ет­ся пра­вый опе­ранд. Три­ви­аль­ный при­мер:

int a = (1 + 2, 3 + 4); //В результате a == 3+4 == 7. Заключёно в
                        //  скобки, так как иначе запятая была бы
                        //  воспринята, как разделитель переменных

Ес­ли пра­вый опе­ранд опе­ра­ции за­пя­тая яв­ля­ет­ся ле­вос­то­рон­ним вы­ра­же­ни­ем (име­ет ад­рес и не яв­ля­ет­ся кон­стан­той), то ре­зуль­та­том то­же яв­ля­ет­ся ле­вос­то­рон­нее вы­ра­же­ние. В этом слу­чае ре­зуль­та­ту мож­но при­сваи­вать зна­че­ние или вы­чис­лять ад­рес:

int a = 1, b = 2;
(a, b) = 3; //В результате a==1, b==3


27.12.2014; 11:06
хиты: 103
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь