@Arsen00

Почему (unsigned long)1073741824 * 8 = 0?

На данный момент переменная "Фактор" составляет 1073741824. При попытке умножить её на 8 получаю 0.

Пробовал так: (unsigned long)1073741824 * (double)8 или (unsigned long)1073741824 * 8.0 , всё работает, но результат число с плавающей точкой, а мне нужно целое.

Подскажите почему так? Как можно исправить?

unsigned long faktor = 1073741824;
faktor = faktor * (unsigned long)8;


5fc609f6cd0dd991529880.png
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
unsigned long - 232-1 = 4'294'967'295
1'073'741'824 * 8 = 8'589'934'592, что больше максимального значения для данного типа.
Используйте unsigned __int64 или unsigned long long, если они есть в вашей системе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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