У меня есть эта операция (8 * (512 * 786432)) и продукт 3221225472
Я пытался использовать его с такими переменными, как longlong, unsigned long
Но компилятор выкинет мне ошибку
c4307 переполнение интегральной постоянной
и мне нужен результат для использования его с функциями, как я могу это исправить? или какие переменные могут работать для больших чисел?
С уважением
Выражение (8 * (512 * 786432))
имеет тип int
и он будет переполнен в 32-битных системах. Присвоение его переменной типа long
не меняет того факта, что значение имеет уже переполнен. Вы можете исправить это, пометив цифры.
long x = (8L * (512L * 786432L));
Вам нужно только поставить L
на одном из чисел, так как это заставит результаты также иметь тип long
,
Это предполагает, что long
является 64-битным, что верно для большинства систем, но не для Windows. Тебе понадобится LL
(или же i64
) в Windows.
Попробуй использовать
(8 * (512ull * 786432))