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

Почему при применении оператора = меняется правый операнд? - C++

Восстановить пароль Регистрация
 
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
27.03.2013, 14:13     Почему при применении оператора = меняется правый операнд? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main () {
  int*p;
  int array [5];
  array [5]= 100;
  printf ("%d\n", array [5]);
  p= array;
  printf ("%d\n", array [5]);
  getchar ();
  return 0;
}
Обращаю внимание- даже типов приводить не понадобилось!
Вывод:
Bash
1
2
100
2293560
Как вам это нравится?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 14:13     Почему при применении оператора = меняется правый операнд?
Посмотрите здесь:

C++ Почему при изменении размера окна не меняется цвет заполнения?
Уточняющий вопрос: почему при перегрузке оператора [] необходимо возвращать ссылку? C++
C++ Ошибка в коде. не найден оператор, принимающий правый операнд типа 'int'
C++ Ошибка : бинарный "<<": не найден оператор, принимающий правый операнд типа point
C++ Конструкторы, приведение типа и ошибка "Не найден оператор, принимающий правый операнд типа 'char *'"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
eocron
Кактус
 Аватар для eocron
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
27.03.2013, 14:24     Почему при применении оператора = меняется правый операнд? #2
Скомпилировал. Все работает. Проблема в компиляторе, скорее всего.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
27.03.2013, 14:26  [ТС]     Почему при применении оператора = меняется правый операнд? #3
g++ 4.6.2
Оно начинает работать правильно, если начать оптимизировать -O..., но мне-то от этого не легче. Оно и безо всякой оптимизации должно выдавать правильный результат!
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.03.2013, 14:37     Почему при применении оператора = меняется правый операнд? #4
Цитата Сообщение от kravam Посмотреть сообщение
Оно и безо всякой оптимизации должно выдавать правильный результат!
Конечно должно, в правильном коде. Ты ж стек затираешь, а там хз что может случится, отсюда и хрень на выходе.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.03.2013, 14:37     Почему при применении оператора = меняется правый операнд? #5
kravam, Вы пишете за пределами массива, а это ни к чему хорошему не приводит
Tmin100
 Аватар для Tmin100
6 / 6 / 0
Регистрация: 12.10.2012
Сообщений: 71
27.03.2013, 14:44     Почему при применении оператора = меняется правый операнд? #6
Я немного не понимаю, почему создавая массив на 5 элементов, вы записываете что-то в шестой?
C++
1
2
int array [5];
  array [5]= 100;
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
27.03.2013, 14:45  [ТС]     Почему при применении оператора = меняется правый операнд? #7
Чё-то я уже совсем стал, на какой-то фигне прокалываюсь.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.03.2013, 15:09     Почему при применении оператора = меняется правый операнд? #8
оператор = тут ни пр чём
массив индексируется от 0 до 4
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2013, 16:17     Почему при применении оператора = меняется правый операнд?
Еще ссылки по теме:

Error C2679: бинарный ">>": не найден оператор, принимающий правый операнд C++
C++ Ошибка при применении алгоритма rotare к set своих классов
C++ Не найден оператор, принимающий правый операнд

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

Или воспользуйтесь поиском по форуму:
ITcrusader
27.03.2013, 16:17     Почему при применении оператора = меняется правый операнд?
  #9

Не по теме:

Тут отражение свое находит мудрость народная:
Чтобы познать границы массива - нужно выйти за его границы

Yandex
Объявления
27.03.2013, 16:17     Почему при применении оператора = меняется правый операнд?
Ответ Создать тему
Опции темы

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