-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 truebenim 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_MINait -9223372036854775808ise, CHAR_BIT16. Ve hatta ile CHAR_BIT == 8ve sizeof(int== 4) `sen alabilirsiniz -9223372036854775807C2-Tamamlayıcı numaraları gerekmez çünkü.