Проблема, с которой вы столкнулись, заключается в том, что используемое вами число (9223372036854775808) равно 2**63
, а максимальное значение, которое может удерживать ваш long long
(как 64-битный тип дополнения со знаком 2s), на единицу меньше - 2**63 - 1
или 9223372036854775807 (это 63 двоичных единицы подряд).
Константы, которые слишком велики для long long
(как в данном случае), имеют тип unsigned long long
, поэтому вы получаете предупреждение integer constant is so large that it is unsigned
.
Тип long
не менее 32 бит, а тип long long
не менее 64 бит (оба, включая знаковый бит).