-2147483648, 32 bitli tamsayı türü için en küçük tamsayıdır, ancak if(...)
cümlede taşacak gibi görünüyor :
if (-2147483648 > 0)
std::cout << "true";
else
std::cout << "false";
Bu true
benim testimde yazdırılacak . Ancak, -2147483648 değerini tamsayıya kullanırsak sonuç farklı olur:
if (int(-2147483648) > 0)
std::cout << "true";
else
std::cout << "false";
Bu yazdırılacaktır false
.
Kafam karıştı. Herkes bu konuda bir açıklama yapabilir mi?
Güncelleme 02-05-2012:
Yorumlarınız için teşekkürler, derleyicimde int boyutu 4 bayt. Bazı basit testler için VC kullanıyorum. Sorumdaki açıklamayı değiştirdim.
Bu yazıda çok iyi cevaplar var, AndreyT , derleyicinin bu girdi üzerinde nasıl davranacağı ve bu minimum tamsayının nasıl uygulandığı hakkında çok ayrıntılı bir açıklama yaptı. Öte yandan qPCR4vir , ilgili bazı "merakları" ve tamsayının nasıl temsil edildiğini verdi. Çok etkileyici!
INT_MIN
ait -9223372036854775808
ise, CHAR_BIT
16. Ve hatta ile CHAR_BIT == 8
ve sizeof(int
== 4) `sen alabilirsiniz -9223372036854775807
C2-Tamamlayıcı numaraları gerekmez çünkü.