Kafam karıştı!1000000000 * 3 = -1294967296?
Bugün
DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;
Shazbot -1294967296
dışarı Huh ??? geliyor 3 Kasım olduğunu Böyle uzun
Kafam karıştı!1000000000 * 3 = -1294967296?
Bugün
DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;
Shazbot -1294967296
dışarı Huh ??? geliyor 3 Kasım olduğunu Böyle uzun
shazbot
bir long
olabilir, ancak ne 1000000000
veya DateTime.Day
bulunmaktadır. Yani C# int
çarpımını ilk yapar (bir taşma ile sonuçlanır), shazbot
içinde saklamak için long
'a gönderir. Bir long
sonuç istiyorsanız
, böyle bir long
bunlardan biri, yapmak:
long shazbot = 1000000000L * DateTime.Day;
Düzenle: l
yerine L
kullanırsanız C# size bir uyarı verir. Sabit.
Değerlerimi uzun süre nasıl değiştirebilirim? Convert.ToInt64? – sooprise
Oyuncular mı? '(uzun) DateTime.Day' – AlexanderMP
Bu" l "hile kullandım, bir çekicilik gibi çalıştı. Teşekkürler! : D – sooprise
Oyuncular:
long shazbot = 1000000000L * DateTime.Day;
İfadeyi uzun süre değerlendirmek için bunlardan birini "uzun" a çevirmek yeterli. –
Yazmak için çok fazla. Her iki işlenene de gerek yoktur. Bir tane yeterli. İkincisi, dolaylı olarak doğru türe dökülecektir. Ya da R. Bemrose'un öne sürdüğü gibi, varsayılan int literal yerine Long literal yazmak için, bu durumda hiçbir cast gerekmeyecek. – AlexanderMP
Teşekkürler, örneğimi değiştireceğim. – jlafay
Hiç C# kullanmamıştım, ancak uzunluğun 32 bit olduğunu görüyoruz. İmza. ha. –
@Josh, C# longs' [64-bit] (http://msdn.microsoft.com/en-us/library/ctetwysk%28VS.71%29.aspx) genişliğindedir. –
Diğer System :: Int32 ve System :: Int64 çiftlerini çoğaltmaya çalışın. Ben sadece ilgilenmiyorum. – foret