7x7 матрица получила целочисленное переполнение - PullRequest
0 голосов
/ 09 октября 2019

введите описание изображения здесь В прошлый раз, когда я работал над матрицей 7x7, чтобы найти произведение положительного числа. Я получил отрицательный результат, и после помещения некоторого места это исправило. Как я узнал, что у меня было целочисленное переполнение. Что за проблема на самом деле я не поняла? Любые мысли о том, как это произошло или как это исправить.

1 Ответ

0 голосов
/ 09 октября 2019

Я думаю, что для решения вашей проблемы используется unsigned int вместо int. Специально для вашего кода используйте

unsigned int sum = 1;

Если вы хотите узнать, каков предел ваших типов, вы можете использовать метод sizeof(). Обычно для int возвращается 2 или 4 (байта). В случае 2 байтов ваш лимит составляет 32 768. В большинстве случаев это будет 4 байта с пределом 2 147 483 648. Если вы знаете, что собираетесь работать только с положительными числами, лучше использовать unsigned int. Таким образом, вы получаете в два раза больше опций, и лимиты соответственно равняются 65 536 и 4 294 967 296

И если вы считаете, что этих пределов недостаточно для расчета, вам следует рассмотреть возможность изменения типа int на long. Его размер составляет 8 байт, и этого более чем достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...