Информация об изменениях

Сообщение Re: Приоритет операторов в C++ от 23.01.2017 8:23

Изменено 23.01.2017 8:23 netch80

Re: Приоритет операторов в C++
Здравствуйте, RussianFellow, Вы писали:

RF>Мне там не всё понятно. В частности, мне не понятно, что такое левоассоциативность и правоассоциативность операторов в C++.


Это как оно расставит скобки в цепочке одинаковых операторов, если скобок нет.

a+b+c интерпретируется (a+b)+c, а не a+(b+c) (для большинства случаев пофиг)

a-b-c — как (a-b)-c, а не a-(b-c) (а вот тут уже не пофиг, результат совсем другой)

это всё были левоассоциативные.

А вот пример правоассоциативного — возведение в степень — почти везде

в Фортране a**b**c понимается как a**(b**c), а не как (a**b)**c, потому что последнее равно a**(b*c), и смысла в такой ассоциативности — никакого.

В Си a=b=c понимается не как (a=b)=c, а как a=(b=c). Первый вариант не имеет смысла. Второй — имеет.

RF>Не могли бы Вы, уважаемые коллеги, объяснить мне получше, что это такое? А заодно и рассказать понятно про приоритет операторов в C++.

RF>Желательно также привести сложные выражения с операторами и объяснить, что они означают.

А что они могут означать?

RF>Я сейчас читаю Страуструпа, но мне хотелось бы прочитать подробно, понятно, популярно про приоритет операторов в C++.


Почему не начать с более простой книги? Страуструп явно писал, что "не хочет оскорблять профессиональных программистов подробным разжёвыванием".
Re: Приоритет операторов в C++
Здравствуйте, RussianFellow, Вы писали:

RF>Мне там не всё понятно. В частности, мне не понятно, что такое левоассоциативность и правоассоциативность операторов в C++.


Это как оно расставит скобки в цепочке одинаковых (или равноприоритетных) операторов, если скобок нет.

a+b+c интерпретируется (a+b)+c, а не a+(b+c) (для большинства случаев пофиг)

a-b-c — как (a-b)-c, а не a-(b-c) (а вот тут уже не пофиг, результат совсем другой)

это всё были левоассоциативные.

А вот пример правоассоциативного — возведение в степень — почти везде

в Фортране a**b**c понимается как a**(b**c), а не как (a**b)**c, потому что последнее равно a**(b*c), и смысла в такой ассоциативности — никакого.

В Си a=b=c понимается не как (a=b)=c, а как a=(b=c). Первый вариант не имеет смысла. Второй — имеет.

RF>Не могли бы Вы, уважаемые коллеги, объяснить мне получше, что это такое? А заодно и рассказать понятно про приоритет операторов в C++.

RF>Желательно также привести сложные выражения с операторами и объяснить, что они означают.

А что они могут означать?

RF>Я сейчас читаю Страуструпа, но мне хотелось бы прочитать подробно, понятно, популярно про приоритет операторов в C++.


Почему не начать с более простой книги? Страуструп явно писал, что "не хочет оскорблять профессиональных программистов подробным разжёвыванием".