@chipoku

Почему при возведении числа 17 в степень 5, программа возвращает отрицательное число?

Возможно, кому то покажется вопрос смешным, но при возведении числа 17 в степень 5, программа возвращает отрицательное число. Мне самому кажется, что проблема в памяти, но сколько бы я не выделял свободного пространства - ничего не менялось. Возводил с помощью pow из cmath.

P.S. Заранее прошу прощения, только не давно начал изучать C++.
При вводе числа 17 в "inNums" вывод -2147483648.
#include <iostream>
#include <cmath>

bool testNums(int num) {
	bool test;
	int FLT = pow(5, num) - 5;

	if (FLT % num == 0) {
		test = true;
	}
	else{
		std::cout << false << std::endl;
		return false;	
	}

	if (test == true) {
		std::cout << true << std::endl;
		return true;
	}

}

int main() {
	int inNums;

	while (true) {
		std::cin >> inNums;
		testNums(inNums);
	}

	return 0;
}
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Целочисленное переполнение. У вас int имеет размер 32 бита, а 517 = 762939453125 > 239. Используйте 64-битовый тип данных, тогда сможете досчитать до 527.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы