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

  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • Mega64

    Mega64

    24 ŞUBAT 2006
  • Mindy

    Mindy

    20 NİSAN 2006