20 ŞUBAT 2013, ÇARŞAMBA
Neden boyutu(imzasız) çift 4 eşittir?
Meslektaşım eğer imzasız çift olup olmadığını sordu, ve değil, ama yine de kontrol ettim, ve bu Microsoft Visual C 2010 derler: yoktur dedim
unsigned double a;
double b;
printf("size_a=%d size_b=%d", (int) sizeof(a), (int) sizeof(b));
size_a=4 size_b=8
çıktılar. Bu, ** 5 double
sekiz bayt için dört bayt.
CEVAP
20 ŞUBAT 2013, ÇARŞAMBA
unsigned double
geçersiz. Bu da MSVC doğrudur.
Uyarıları ile MSCV 2010 yılında yukarıdaki kod derleniyor etkinleştirildiğinde alıyorum:
warning C4076: 'unsigned' : can not be used with type 'double'
Derleyici aslındayok sayarunsigned
, a
bunu yaptıktan sonra double
aslında unsigned int
.
Eğer aşağıdakileri deneyin:
unsigned double a = 1.0;
Aslında iki uyarı:
warning C4076: 'unsigned' : can not be used with type 'double'
warning C4244: 'initializing' : conversion from 'double' to 'unsigned int', possible loss of data
İlginçtir, VS2010 için MSDN C4076 uyarı yok. VS2005 ve VS2008 için var.
Bunu Paylaş:
Neden önemli GetHashCode yöntem geçers...
Neden boyutu(x ) x artım değil mi?...
Neden kullanmıyorsun ya da para birimi...
Neden't bir yapı her üyenin boyut...
Neden't Java imzasız değer vermez...