я новичок в программировании, подскажите что за ошибка и как ее исправить.
компилирую код, он компилится, но выдает ошибку через пошаговый дебагинг.
visual studio 2005
> я новичок в программировании, подскажите что за ошибка и как ее исправить. > компилирую код, он компилится, но выдает ошибку через пошаговый дебагинг.
> CXX0030: Error: expression cannot be evaluated
-- это ошибка ? Это видимо ошибка всё-таки компилятора.
Разберись уж.
Ну и какой смысл выделять динамически массивы по фиксированному в compile time
размеру ? Хип тренируем ?
Posted via RSDN NNTP Server 2.1 beta
Re: CXX0030: Error: expression cannot be evaluated
Не надо так больше делать. Формат вордового документа не для того предназначен.
Уж на то пошло, можно было сохранить и прикрепить непосредственно .cpp
А вообще, открой для себя онлайн-средства наподобие pastebin.com или компиляторы codepad.org, liveworkspace.org, ideone.org
Здравствуйте, Кодт, Вы писали:
К>Твой пример на кодепаде: http://codepad.org/sz8xEBVV К>выдаёт сегфолт (расстрел памяти) на 28 шаге.
Очевидный косяк: for(i=0; i<=n; ++i).
В С/С++ принято использовать полуинтервалы — т.е. a[n] содержит элементы a[0], a[1], ..., a[n-1].
При i=n происходит вылет за границу массива.
То есть, на последнем этапе (j=4, i=2) мы умудрились выскочить за границу массива Ht и выстрелить в находящуюся по соседству переменную j.
После чего попытались обратиться к Ht[j] с этим бешеным отрицательным значением.
Разбираться в алгоритме не хочу, — так что более содержательную помощь пока оказать не готов.
Перекуём баги на фичи!
Re[3]: CXX0030: Error: expression cannot be evaluated
в общем исправил границы массива
скомпилировал код который Вы мне присылали. НО! мой компилятор не показывает это гигантское отрицательное значение J
есть ли какие-нибудь догадки почему просиходит приравнивание J к такому числу ?
Re[4]: CXX0030: Error: expression cannot be evaluated
Здравствуйте, romaf91, Вы писали:
R>в общем исправил границы массива R>скомпилировал код который Вы мне присылали. НО! мой компилятор не показывает это гигантское отрицательное значение J R>есть ли какие-нибудь догадки почему просиходит приравнивание J к такому числу ?
Потому что это мусор. Есть такой принцип "GIGO" — garbage in garbage out.
Мы сначала прочитали что-то за пределами массива (инициализированное как попало — то ли нулём, то ли ещё чем-то), повычисляли что-то с этим мусором, и потом записали мусор в J.
В зависимости от настроек компилятора и загрузчика там могло быть и 0, и 0xCDCDCDCD, и 0xDEADBEEF, и просто неочищенная от предыдущей работы память.
Опять же, в зависимости от настроек, компилятор мог чуть-чуть по-разному расположить переменные в памяти. Соответственно, выстрел происходил в разные переменные, с разной степенью фатальности.
Перекуём баги на фичи!
Re[5]: CXX0030: Error: expression cannot be evaluated
Здравствуйте, romaf91, Вы писали:
R>double Ht[n][N]; — вот здесь ошибка в самом начале, неверный размер массива, исправил , вроде работает. можете проверить ?