SORU
22 EYLÜL 2009, Salı


uzun uzun C/C

GNU C derleyici bu kodu çalışıyorum ve bu davranışını anlamak mümkün duyuyorum:

#include <stdio.h>;

int main()
{
    int  num1 = 1000000000;
    long num2 = 1000000000;
    long long num3;
    //num3 = 100000000000;
    long long num4 = ~0;

    printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
    printf("%d %ld %lld %llu", num1, num2, num3, num4);
    return 0;
}

Çizgi yorumladı ben Yorumsuz, kod derleme değildir ve bir hata veriyor:

hata: sabit uzun yazın için çok büyük tamsayı

Ama kod olarak derlenir ve çalıştırılır, değerleri 10000000000 çok daha büyük üretir.

Neden?

CEVAP
22 EYLÜL 2009, Salı


Harfleri 100000000000 değişmez bir tamsayı sabit olması durumunda ise değer tipi int için çok büyük. Harf türünü değiştirmek için bir sonek kullanmak gerekir, yani

long long num3 = 100000000000LL;

Soneki LL literal içine yazın long long yapar. C" solda türünden bu sonuç için yeterli, bu tür edebi kendisinin bir özelliği vardır, bu bağlamda kullanılmıyor. "akıllı değildir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • Floortile83

    Floortile83

    16 Ocak 2010
  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010