SORU
26 Mart 2010, Cuma


Nasıl baskı değişken portably size_t?

size_t, printf() kullanarak yazdırmak istediğim türde bir değişken var. Ne biçim belirtici yazdırmak için kullanın portably?

32-bit makine, %u doğru görünüyor. -G g-W-Wall -Werror -ansı derlenmiş-ukala ve uyarı vardı. Ama ben 64-bit kod makine derlerken uyarı üretir.

size_t x = <something>;
printf( "size = %u\n", x );

warning: format '%u' expects type 'unsigned int', 
    but argument 2 has type 'long unsigned int'

Uyarı eğer değiştirirsem beklenen, 6 ** olarak geçer.

Soru, nasıl 32 - ve 64 - bit makineler, hem de ücretsiz uyarı derler ki kod yazmak.

Edit: bir cevap "" 8**. ** 7, ve bir baskı içine değişken atama için olabilir sanırım Yani her iki durumda da işe yarar. Eğer başka bir fikrin varsa arıyorum.

CEVAP
26 Mart 2010, Cuma


z değiştirici kullanın:

size_t x = ...;
ssize_t y = ...;
printf("%zu\n", x);  // prints as unsigned decimal
printf("%zx\n", x);  // prints as hex
printf("%zd\n", y);  // prints as signed decimal

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • Jay Will

    Jay Will

    19 NİSAN 2006
  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006