Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Int64 становится отрицательным


Автор: Crusaderr 25.5.2011, 08:43
Visual C++ 2008

есть несколько переменных Int64


Код
//166*16777216=2785017856
Int64 checksum1=166*16777216;
Int64 checksum2=2785017856;


при пошаговом просмотре выясняется, что
checksum1=-1509949440
при том что checksum2=2785017856

как это победить, чтобы в checksum1 записывалось произведение?

Автор: likegift 25.5.2011, 09:16
минус, потому что переполнение. переполнение, потому что не явный int64.
вот:
Код

Int64 checksum1 = (Int64)166*16777216;

Автор: appo 25.5.2011, 09:26
По идее еще 
Код

Int64 checksum1 = 166*16777216LL;

должно сработать.

Автор: Voyager 25.5.2011, 09:35
Можно попробовать UInt64.

Автор: Crusaderr 25.5.2011, 09:39
Код
Int64 checksum1 = (Int64)166*16777216;

помогло, большое спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)