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

  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • listedabive

    listedabive

    30 Ocak 2007
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010