Форум программистов, компьютерный форум CyberForum.ru

приоритеты операций - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
gexeg
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
22.06.2010, 22:27     приоритеты операций #1
Интересную ошибку нахожу в книгах по части приоритетов операций в C++:
например здесь и здесь указано, что у косвенности (*) больший приоритет чем у индексации (например), если бы это было действительно так то выражение int* a[5] обозначало бы указатель на массив из пяти int.. на самом деле это массив из пяти указателей на int.

в одной из тем была дана ссылка на всеми любимую википедию. здесь (в википедии) также есть ошибка... у оператора ++ (постфиксный) меньший приоритет чем у вызова функции.. это можно доказать например так:
int* a[1] = {
(int*)0
}
a[0]++;
если верить статье из википедии, то последний оператор должен увеличить a (изменить ее адрес).. на самом деле сначала происходит индексация.. и потом меняется адрес на который указывает первый элемент массива

в этой статье вообще что-то с чем-то

Самое толковое руководство которое думаю стоит использовать это книга Бьерна Страуструпа "Язык программирования C++"... каких-то явных косяков не находил в ней (пока)...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2010, 22:27     приоритеты операций
Посмотрите здесь:

Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 C++
Расставить приоритеты операций и вычислить значение заданного выражения (Помогите с задачей) C++
C++ Приоритеты вложенных циклов
Приоритеты выполнения перегрузок операций C++
C++ Стек и приоритеты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
22.06.2010, 22:37     приоритеты операций #2
А кому какая разница, когда происходит индексация?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
22.06.2010, 22:43     приоритеты операций #3
int* a[1]
здесь вообще-то нет операций, * и [1] определяют тип переменной, приоритеты операций действуют в выражениях, а не во внутренних конструкциях языка
gexeg
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
22.06.2010, 23:14  [ТС]     приоритеты операций #4
ну вообще-то это все операции...

Добавлено через 11 минут
ладно.. приведу более очевидные примеры

C++
1
2
3
4
5
6
    int b = 1;
    int* a[1] = {
        &b
    } ;
 
    cout << *a[0] << "\n";
------------------------------------------------

C++
1
2
3
4
5
6
7
    struct mystruct {
        int a;
    };
 
    mystruct* aa = new mystruct;
    aa->a = 1;
    aa->a++;
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
22.06.2010, 23:21     приоритеты операций #5
Цитата Сообщение от gexeg Посмотреть сообщение
int* a[1]
вообще-то это объявление переменной с инициализацией, вы хотите поговорить о грамматиках в с++?
Цитата Сообщение от gexeg Посмотреть сообщение
a[0]++;
если верить статье из википедии, то последний оператор должен увеличить a (изменить ее адрес).. на самом деле сначала происходит индексация.. и потом меняется адрес на который указывает первый элемент массива
ваш источник и правда приводит неправильные приоритеты, [] и ++ имеют один приоритет, поэтому выполняются слева направо - сперва *(a+0), потом ++
gexeg
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
22.06.2010, 23:29  [ТС]     приоритеты операций #6
хм... точно.. одинаковые...
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.06.2010, 02:23     приоритеты операций #7
Цитата Сообщение от gexeg
Интересную ошибку нахожу в книгах по части приоритетов операций в C++
это сишные

Цитата Сообщение от gexeg
что у косвенности (*) больший приоритет чем у индексации
в сишных нормально показывает всё
gexeg
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
23.06.2010, 07:57  [ТС]     приоритеты операций #8
Да действительно.. что-то я не обратил внимание на то что это статьи по си..
тороплюсь.. но зато разобрался...
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
23.06.2010, 15:59     приоритеты операций #9
accept, как так, в си другие приоритеты?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.06.2010, 03:28     приоритеты операций #10
в C++ стали редактировать операции, если там и приоритеты поменяют - это не будет удивительно
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 03:49     приоритеты операций #11
Не боись, не поменяют никуда.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.06.2010, 04:49     приоритеты операций #12
почему не поменяют, что мешает поменять приоритет операций в C++ ?
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 04:57     приоритеты операций #13
Ну просто внезапно бац, и сотни тысяч существующих исходников на Ц/ЦПП перестанут правильно работать. Разработчики языка никогда на это не пойдут. Ну попросту никто не будет использовать такой компилятор.

Добавлено через 6 минут
Википедия о грядущем стандарте:
Согласно докладу, сделанному Бьёрном Страуструпом, новый стандарт будет на 100 % совместим с нынешней версией языка С++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2010, 12:28     приоритеты операций
Еще ссылки по теме:

C++ Создание и завершение процессов и потоков. Приоритеты выполнения потоков
приоритеты операций C++
Перегрузка операций C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.06.2010, 12:28     приоритеты операций #14
исходники - это не помеха

новый стандарт будет на 100 % совместим с нынешней версией языка С++
предполагается, что он мог бы быть не совместим
Yandex
Объявления
24.06.2010, 12:28     приоритеты операций
Ответ Создать тему
Опции темы

Текущее время: 07:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru