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

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • BigDawsVlogs

    BigDawsVlogs

    17 HAZİRAN 2013
  • David Wills

    David Wills

    31 Aralık 2007