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

  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008
  • kourtneyannmakeup

    kourtneyannm

    19 ŞUBAT 2012
  • KRQE

    KRQE

    6 AĞUSTOS 2007