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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
gexeg
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 10
#1

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

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

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

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

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

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

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

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

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

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

Приоритеты вложенных циклов - C++
Nk=20; for(Ni=0;Ni<Nk;Ni++) { for(i=0;i<size;i++) { for(j=0;j<size;j++) { if(Map==Ni) {

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

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

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

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

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

Создание и завершение процессов и потоков. Приоритеты выполнения потоков - C++
Здравствуйте. Буду очень раз если поможете понять,что конкретно нужно сделать в вот этом задании,пока особого представления о...

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

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

Перегрузка операций - C++
Данная программа выполянет операции с дробями. Но у меня возникла проблема. Я создал сервисную функцию которая сокращает дробь. Ну дело том...


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
24.06.2010, 12:28
Ответ Создать тему
Опции темы

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