![]() |
|
Модераторы: bsa |
![]()
|
|
| klassik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Программирую в borland C++ 3.1. В Windows XP.
Написал простую программу. Всё работает:
Но если вместо int a[2]; поставить float a[2]; То программа вылетает. И даже exe файл не создаётся. |
|||
|
||||
| bobik02 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 26.11.2007 Репутация: нет Всего: 14 |
Правильно делает!
Проверил на : Dev-C++ 4.9.9.2 , C++ BuilderX 1.0.0.1776, Если присваивать элементу массива типа float значение типа int, компилятор не ругается(что удивительно!) и даже нет предупреждения... По идеи вам поможет явное преобразования:
-------------------- Have a nice day |
|||
|
||||
| Maka6er |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 27.2.2007 Где: Киев Репутация: 1 Всего: 3 |
Что то мне кажется что компилятор стоило бы сменить - староват.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
вообще-то преобразование целых типов к вещественным не сопровождается ни ошибками, ни предупреждениями
|
|||
|
||||
| bobik02 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 26.11.2007 Репутация: нет Всего: 14 |
По логике вещей так и есть. На счёт ошибок, и предупреждений - это я погорячился -------------------- Have a nice day |
|||
|
||||
| klassik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Я изучаю С++ по книге "Как программировать на С++" , Дейтел Х., Дейтел П. Мне сказали, что примеры там для Borland C++ 3.1. Может это не так. Хотя даже если это и так, то может вы мне посоветуете что-нибудь другое. Что-нибудь более близкое. Так чтобы примеры не пришлось переделывать. По крайней мере не очень сильно. |
|||
|
||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: нет Всего: 15 |
klassik, дело совсем не в int и float. Ошибка в другом: массив из 2 элементов, а ты заполняешь 3. В этот раз тебе повезло с float, что ошибку сразу обнаружил и не повезло с int, в другой раз может быть с точностью до наоборот.
А это ты, наверное, погорячился? Если нет - какие ошибки выдаёт при компиляции? Это сообщение отредактировал(а) Ln78 - 5.7.2008, 21:03 |
|||
|
||||
| klassik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Точно.
Я то подумал что в a[2] двойка означает последний индекс массива. А это количество. Т.е. ноль и один. Спасибо. Добавлено @ 21:12
Окно windows: Borland C++ for DOS Процессор NTVDM обнаружил недопустимую инструкцию. Cs:88eb IP:704c OP:0f 02 17 282a Это сообщение отредактировал(а) klassik - 5.7.2008, 21:24 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Это не ошибка компиляции. Это ошибка исполнения. Возможно, твоей программы, возможно BC 3.1. |
|||
|
||||
| klassik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Ошибся. Создаётся но в другом каталоге.
В другой версии программы с такой же ошибкой вылетало вот что: Floating point error: Domain. Abnormal program termination Null pointer assignment Это уже в окне DOS. Это сообщение отредактировал(а) klassik - 5.7.2008, 21:26 |
|||
|
||||
| Maka6er |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 27.2.2007 Где: Киев Репутация: 1 Всего: 3 |
Попробуйте IDE: Microsoft Visual Studio или DevCPP. Можно конечно отдельно взять компилятор но для начала удобнее будет все же IDE.
В стандарте C++ принято писать не #include <iostream.h> а #include <iostream> и return 0; в конце main не обязательно так что возможно придется слегка примеры переделать но скорее всего все будет работать и так. |
||||
|
|||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: нет Всего: 25 |
На последней итерации значение индекса будет равно "2", что больше максимально возможного ("1"), преобразования тут не при чем. Опс... поторопился, об этом уже писал Ln78 Это сообщение отредактировал(а) dizzy1984 - 7.7.2008, 13:06 |
|||
|
||||
| NebelDT |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 29.9.2008 Где: RU Репутация: -6 Всего: -10 |
ДА походу просто цикл неправильный) |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |