SORU
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ş:
  • Google+
  • E-Posta
Etiketler:
C#

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • tychoadragmire

    tychoadragmi

    20 Mart 2006