Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
1

приоритеты операций

22.06.2010, 22:27. Показов 2974. Ответов 13
Метки нет (Все метки)

Интересную ошибку нахожу в книгах по части приоритетов операций в C++:
например здесь и здесь указано, что у косвенности (*) больший приоритет чем у индексации (например), если бы это было действительно так то выражение int* a[5] обозначало бы указатель на массив из пяти int.. на самом деле это массив из пяти указателей на int.

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

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

Самое толковое руководство которое думаю стоит использовать это книга Бьерна Страуструпа "Язык программирования C++"... каких-то явных косяков не находил в ней (пока)...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2010, 22:27
Ответы с готовыми решениями:

приоритеты операций
cout << (5 <<3); что это за знак << и где можно узнать приоритеты всех (или основных) операций в...

Приоритеты выполнения перегрузок операций
Всем привет. Скажите как себя будет вести программа в следующей ситуации и чем это...

Расставить приоритеты операций и вычислить значение заданного выражения (Помогите с задачей)
Расставить приоритеты операций и вычислить значение заданного выражения, используя форматы...

Стек и приоритеты
Ошибок при компиляции не возникает, но при проверке не выдает адресов элементов и их данных. Прошу...

13
249 / 143 / 21
Регистрация: 14.06.2010
Сообщений: 340
22.06.2010, 22:37 2
А кому какая разница, когда происходит индексация?
0
бжни
2473 / 1682 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.06.2010, 22:43 3
int* a[1]
здесь вообще-то нет операций, * и [1] определяют тип переменной, приоритеты операций действуют в выражениях, а не во внутренних конструкциях языка
0
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++;
0
бжни
2473 / 1682 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.06.2010, 23:21 5
Цитата Сообщение от gexeg Посмотреть сообщение
int* a[1]
вообще-то это объявление переменной с инициализацией, вы хотите поговорить о грамматиках в с++?
Цитата Сообщение от gexeg Посмотреть сообщение
a[0]++;
если верить статье из википедии, то последний оператор должен увеличить a (изменить ее адрес).. на самом деле сначала происходит индексация.. и потом меняется адрес на который указывает первый элемент массива
ваш источник и правда приводит неправильные приоритеты, [] и ++ имеют один приоритет, поэтому выполняются слева направо - сперва *(a+0), потом ++
0
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
22.06.2010, 23:29  [ТС] 6
хм... точно.. одинаковые...
0
4856 / 3277 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
23.06.2010, 02:23 7
Цитата Сообщение от gexeg
Интересную ошибку нахожу в книгах по части приоритетов операций в C++
это сишные

Цитата Сообщение от gexeg
что у косвенности (*) больший приоритет чем у индексации
в сишных нормально показывает всё
0
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
23.06.2010, 07:57  [ТС] 8
Да действительно.. что-то я не обратил внимание на то что это статьи по си..
тороплюсь.. но зато разобрался...
0
бжни
2473 / 1682 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
23.06.2010, 15:59 9
accept, как так, в си другие приоритеты?
0
4856 / 3277 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
24.06.2010, 03:28 10
в C++ стали редактировать операции, если там и приоритеты поменяют - это не будет удивительно
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
24.06.2010, 03:49 11
Не боись, не поменяют никуда.
0
4856 / 3277 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
24.06.2010, 04:49 12
почему не поменяют, что мешает поменять приоритет операций в C++ ?
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
24.06.2010, 04:57 13
Ну просто внезапно бац, и сотни тысяч существующих исходников на Ц/ЦПП перестанут правильно работать. Разработчики языка никогда на это не пойдут. Ну попросту никто не будет использовать такой компилятор.

Добавлено через 6 минут
Википедия о грядущем стандарте:
Согласно докладу, сделанному Бьёрном Страуструпом, новый стандарт будет на 100 % совместим с нынешней версией языка С++.
0
4856 / 3277 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
24.06.2010, 12:28 14
исходники - это не помеха

новый стандарт будет на 100 % совместим с нынешней версией языка С++
предполагается, что он мог бы быть не совместим
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2010, 12:28

Приоритеты вложенных циклов
Nk=20; for(Ni=0;Ni&lt;Nk;Ni++) { for(i=0;i&lt;size;i++) { for(j=0;j&lt;size;j++) { ...

Приоритеты операций
Доброго времени суток! Я недавно начал изучать С++. Читаю книгу &quot;Липпман. С++ для начинающих&quot;. И...

Приоритеты потоков
Здравствуйте, пишу две программы, в одной из которых обработка данных просто делится на потоки, а в...

Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100
Вычисления проводятся слева-направо, ни одна операция не имеет приоритета. Добавлено через 2...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.