2 HAZİRAN 2009, Salı
bayt = int... neden?
Bu bakarak C# kod...
byte x = 1;
byte y = 2;
byte z = x y; // ERROR: Cannot implicitly convert type 'int' to 'byte'
Herhangi bir matematik sonucu bayt üzerinde gerçekleştirilen (veya) kısa türleri örtülü olarak bir tamsayı artığını. Çözüm açıkça sonucu bir byte için geri atmak
byte z = (byte)(x y); // works
Merak ediyorum ne neden olur? Mimari mi? Felsefi?
Var:
- = int int int
- uzun uzun = uzun
- şamandıra = yüzer yüzer
- çift = çift çift
Neden olmasın:
- = bayt bayt bayt
- kısa kısa = kısa ?
Arka plan biraz:
Hesaplamalar uzun bir liste gösteri yapıyorum "küçük sayılar" (yani < 8) ve büyük bir dizi Ara sonuçları saklamak. Bir kullanarakbayt dizisi(int dizi yerine)daha hızlı(cache hit). Ama çok daha geniş okunmaz byte-atmalarını yayılmış kodu.
CEVAP
2 HAZİRAN 2009, Salı
Kod parçacığını üçüncü satır:
byte z = x y;
aslında anlamına gelir
byte z = (int) x (int) y;
Yani, bayt üzerinde işlem yok, ilk bayt tamsayı için atama ve iki tamsayılar ilavesi sonucu (32-bit) bir tamsayı.
Bunu Paylaş:
Neden Java API yerine veya bayt int kı...
Neden Java '(int)(char)(bayt)-2&#...
Neden `ücretsiz` C bayt sayısını serbe...
Neden İddia ediyor.AreEqual(T) obj1, T...
C#/.NET neden sbyte[] bayt olarak aynı...