Печать последнего массива 0 Переполнение стека

Я делаю игру в кости на C ++, и в моей программе есть несколько массивов.

die[5] = { (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1 };

И тогда я использую массивы с

cout<<"First die: "<< die[0] <<"\n"

так далее

Но когда я запускаю программу, последний массив будет всегда напечатайте 0, есть ли способ, как я могу это исправить?

0

Решение

В вашем коде у вас есть эта строка:

54.  cout<<"Sixth die: " << die[5] <<"\n";

который является недопустимым доступом, поскольку die имеет только 5 элементов, поэтому от 0 до 4 являются допустимыми индексами.

На самом деле это «неопределенное поведение». Ваша программа может выполнить дамп / нарушение прав доступа, но это не обязательно. Вместо этого он может просто вывести случайное число или ноль …

0

Другие решения

Вы не очень много информации даете, но вот мое предположение:

  • Ты зашел слишком далеко. Последнее место в массиве — die [4], и есть вероятность, что вы используете die [5], что означает, что вы обращаетесь к памяти, к которой вы не должны. В некоторых системах это автоматически инициализируется как «0».

Массивы размера N всегда содержат N элементов в диапазоне от 0 до N-1. Использование массива [N] обращается к памяти за диапазон массива. Это может быть неиспользованная память (в лучшем случае) или память, выделенная для чего-то другого. Результат НЕИСПРАВНЫЙ. Не делайте этого.

6

По вопросам рекламы [email protected]