Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 2
Регистрация: 02.06.2013
Сообщений: 39
1

Что происходит с элементами массива в visual studio 2019?

04.06.2019, 19:27. Показов 2585. Ответов 3

Author24 — интернет-сервис помощи студентам
добрый день всем.
заранее прошу прощения, пишу для себя программку по фану, а все мои знания - это информатика в инстике 9 лет назад.
есть у меня массив
C++
1
2
const int operations1 = 20; //например
int table[operations1][7]
и все данные там лежат как положено.
вывожу на экран table[1][1] и table[1][2] - значения 23 и 3 соответственно.
после совершения цикла
C++
1
2
3
int k1 = 15; //например
for (i = operations1; i >= k1; i--)
tbldbl[i][5] = dop;
содержание элементов table[1][1] и table[1][2] приобретает неведомые значения не зависимо от k1 (0 <= k1 <= operations1).
например, согласно
C++
1
2
for (i = 0; i < operations1; i++)
cout << setw(3) << table[i][1] << setw(3) << table[i][2] << endl;
выводятся именно в этих двух ячейках -858993459 и 1076219084. не поддаваясь при этом манипулятору setw.
и это проявляется в visual studio 2019. и только для двух этих ячеек [1][1] и [1][2].
в android-приложении dcoder тот же код выводит все как надо.
я в замешательстве.

и еще вопрос, как избежать варнинга
C26451 Arithmetic overflow: Using operator '-' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '-' to avoid overflow (io.2).
в строке
C++
1
2
3
double tbldbl[a][7];
int table[b][7]
tbldbl[i][0] = table[i][1] - table[i - 1][1]
ведь я по сути не теряю данные, а неявно преобразовываю int в double?
что значит cast the value (как я могу кастовать, я же не волшебник)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2019, 19:27
Ответы с готовыми решениями:

Проблема в Visual Studio 2019
Добрый вечер. Установил Visual Studio 2019. Поставил следующие галочки: Разработка классических...

Конфликт wxdevc++ и Visual Studio 2019 community
Учу с/с++. Установил wxdevc++, набросал маленький код, проверил, все работает. Компилирует,...

Проблемы с запуском проекта Visual Studio 2019
Доброго времени суток, уважаемые формучане! Просьба помочь кипящему уже чайнику :wall: ...

Ошибка LNK 2019 - C++ (Visual Studio 2011)
Доброго времени суток. Помогите пожалуйста разобраться. Не удается запустить проект из 3-х файлов....

3
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
04.06.2019, 19:35 2
Лучший ответ Сообщение было отмечено 4117780 как решение

Решение

Цитата Сообщение от 4117780 Посмотреть сообщение
for (i = operations1; i >= k1; i--)
индексы должны быть в диапазоне [0,operations1-1]
tbldbl[operations1][5] - это выход за границы с соответствующим неопределенным поведением.


Цитата Сообщение от 4117780 Посмотреть сообщение
int table[b][7]
Сделайте его тоже double
1
1 / 1 / 2
Регистрация: 02.06.2013
Сообщений: 39
04.06.2019, 19:54  [ТС] 3
спасибо! действительно, ведь opeartions1 - это количество строк, а поскольку номера строк начинаются с 0, то номер последней - это operations1-1.

Цитата Сообщение от zss Посмотреть сообщение
Сделайте его тоже double
дело в том, что в пределах этого массива я выявляю некоторые закономерности при помощи операторов != и ==.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
04.06.2019, 20:26 4
Ну, тогда делайте так, как предложил компилятор
C++
1
tbldbl[i][0] = (double)table[i][1] - table[i - 1][1];
1
04.06.2019, 20:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2019, 20:26
Помогаю со студенческими работами здесь

В коде возникли ошибки при переходе с Visual studio 2013 на Visual studio 2017
Добрый день, решил попробовать поменять свою 2013 студию на 2017 и заметил такую проблему, при...

Имеются ли отличия в компиляторах у сред разработки Visual Studio 2006 и Visual Studio 2015 ?
скажите а где найти среду 2006 года? или можно использовать 2015 год?

Размер Visual Studio 2017 и Visual Studio 2019
Почему visual studio 2019 после скачивания занимает 24гб, а visual studio 2017 до 45гб? может я что...

QtCreator и Visual Studio 2019
Всем привет! Переустановил ОС. Поставил самую новую Visual Studio 2019. Затем установил QtCreator,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru