Boyutu(char)=! orada makineler, 1?
sizeof(char) != 1
* * * * makine (veya Derleyiciler) var mı ?
YokC99 standardıyazan standart uyum uygulama sizeof(char)
tam olarak 1 OLMALIDIR? Eğer varsa, lütfen bana bölüm numarası ve referans verin.
Güncelleme:
Eğer bir makine (İŞLEMCİ) varsa, bayt (en az okuma 4 bayt hizalanmış) adresi olamaz, ama sadece 4-s bayt (uint32_t
)sizeof(char)
tanımlayabilirsiniz?sizeof(char)
1, ama char 32 bit olacaktır(CHAR_BIT
makrolar)
Update2: Ama boyutu neden bir BAYT DEĞİL ! CHAR büyüklüğünde. Ve 2 byte ya da (olabilir) 7 bit olması char?
Update3:
Tamam. Tüm makineleri sizeof(char) == 1
. Ama makineleri CHAR_BIT > 8
ne var ?
CEVAP
Her zaman C99, bölüm 6.5.3.4 içinde olduğu
Bir işlenen uygulandığında imzasız char tip char, veya imzalı (ya da nitelikli bir sürüm bunun gibi)char sonuç 1'dir.
Edit: Harbison ve Steele faiz, 3rd ed. için Sorunuzun bir parçası değil, ama (ön c99) p. 148:
Depolama birimi olarak ele alınır. depolama tarafından işgal edilen miktarı karakter; bir nesnenin boyutu yazın
char
Bu nedenle 1.
Edit: aşağıdaki soru ve cevap ilgili (Eski age. profesyonel Sorunuzun cevabı Ch 4. 6):
"C" için kabul edilebilir mi
char
hangi uygulama değerleri arasında değişen temsil 2,147,483,647 ile -2,147,483,648? Yani,sizeof(char)
ne olurdu eğer bunun altında uygulama? Ne olurdu en küçük ve en büyük aralıkları yazınint
?
Cevap (p. age 382):
İzin savurgan (varsa) için 32 bit kullanmak için uygulama 18 ** türü temsil eder. Ne olursa olsun bu uygulama, değeri
sizeof(char)
Her zaman 1'dir.
Bu süre değil özellikle Adres dava nerede, söyle bayt 8 bit ve char
4 o bayt (aslında imkansız olan c99 tanımı, aşağıya bakınız), aslında bu sizeof(char) = 1
Her zaman açık c99 standart ve Harbison ve Steele.
Edit: aslında (bu modern family 2 sorunuza yanıt olarak) olarak c99 sizeof(char)
ilgilidirbayt cinsinden, bölüm 6.5.3.4 tekrar:
İşletmen boyutu verir (bayt olarak) işlenen
c99 bayt char
bir aynıdır. için, 8 bit ve bayt 4 char
bayt imkansızdır yukarıdaki tırnak ile bir araya getirdim:
7 bit char
bir olasılığı bahsettiğiniz cevap: bu c99'da mümkün değildir. Standart bölüm 5.2.4.2.1 göreminimum8:
Kendi tanımlı uygulama değerleri eşit olacaktırya da daha büyük[vurgu benim] aynı işareti ile gösterilen büyüklük.
— bitlik sayı için en küçük bir nesne değil, bit-alanı (bayt)
**CHAR_BIT 8**
türünde bir nesne için minimum değer char imzaladı
**SCHAR_MIN -127//−(27−1)**
türünde bir nesne için maksimum değer char imzaladı
**SCHAR_MAX 127//27−1**
türü işaretsiz char türünde bir nesne için maksimum değer
**UCHAR_MAX 255//28−1**
char türü bir nesne için minimum değer
**CHAR_MIN** see below
char türü bir nesne için maksimum değer
**CHAR_MAX** see below
[...]
Türünde bir nesne değeri char imzalı bir tamsayı olarak kabul edilir bir ifadenin, değeri CHAR_MİN aynı olacaktır SCHAR_MİN ve CHAR_MAX değeri aynı olacaktır SCHAR_MAX. Aksi halde, değeri CHAR_MİN ve değeri 0 olacaktır CHAR_MAX aynı olacaktır UCHAR_MAX. Değer UCHAR_MAX olacaktır 2^CHAR_BİT − 1 eşit.
Neden boyutu(char)` eğer char standart...
Nasıl bazı platformları ve sabit bir c...
Android - Launcher Simge Boyutu...
Nasıl Dize/ayrıştırma java char dönüşt...
Orada eğri / arc için bir yol metin CS...