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

  • kylediablo

    kylediablo

    8 Ocak 2007
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011
  • segtlim

    segtlim

    21 EKİM 2008