SORU
18 NİSAN 2013, PERŞEMBE


Neden NSİnteger bir değişken uzun biçim bir argüman olarak kullanılan dökme olmak zorunda mı?

NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <==== 

Yukarıdaki kod bir hata üretir:

Values of type "NSInteger" should not be used as format arguments: add an explicit cast to 'long' instead.

NSLog doğru mesaj aslında NSLog(@"%lg", (long) myInt); Neden değerini görüntülemek istiyorum eğer uzun myİnt tamsayı değeri dönüştürmek zorunda mıyım?

CEVAP
18 NİSAN 2013, PERŞEMBE


Bu platformda NSInteger long olarak tanımlanır ve bir 64-bit tamsayı, çünkü eğer X (64-bit) derleme OS eğer bu uyarı alırsın. %i biçimini, diğer taraftan, 32-bit int,. Biçimi ve gerçek parametre boyutu eşleşmiyor.

NSInteger 32-bit veya 64-bit platforma bağlı olduğundan, derleyici önerir long bir döküm genellikle eklemek için.

Güncelleme:İOS 7 64-bit de destekler beri, derlerken aynı uyarı alabilirsiniz iOS için.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Floortile83

    Floortile83

    16 Ocak 2010
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010