Ben kodu vardır:Neden bir size_t ile imzasız bir int dönüştürme, bana bir uyarı veriyor?
unsigned int length = strlen(somestring);
Ben on 4 uyarı seviyesi ile derleme ve "dönüşüm size_t
den unsigned int
için, olası veri kaybının" bir size_t
bir bir typedef
olduğunda yaşadığını söylüyor unsigned int
.
Neden !?
Düzenleme: Sadece kendi sorununu çözdü
. Ben bir XP kullanıcısıyım ve derleyicim 64 bit uyumluluğunu kontrol ediyordu. size_t
platform bağımlı olduğundan, 64 bit için unsigned long long
olur; bu, unsigned int
ile aynı değildir.
Tüm boyutlar bağımlıdır. 'size_t' diğer herhangi bir türe eşit olmak zorunda değildir, hepsi farklı olabilir. Sahip olduğunuz tek garanti, 'sizeof (char) == 1' ve' char'daki bitlerin sayısı (ayrıca bağımlıdır!) '' başlığında 'CHAR_BIT 'makrosunda tanımlanmıştır. ve bu “büyüklük (kısa)> = sizeof (char),” sizeof (int)> = sizeof (uzun), ve 'sizeof (uzun uzun)> = sizeof (uzun). –
GManNickG
@GMan: Aslında inanıyorum ki (long)> = sizeof (int) ':) +1 olsa da –
@Billy: Oh dangit. Şimdi düzeltmek için çok geç. -_- Oh iyi. : 3 – GManNickG