2016-04-10 27 views
-4

: Ben çünkü 0x000000:C - printf işaretsiz int ben işaretsiz int gibi yazdırmak istiyoruz

# define OFFSET (u32) 0x21FE014 
typedef unsigned int u32; 

böyle printf kullandığınızda: 35643412

:

printf("Offset: %zu\n", OFFSET); 

Beni döndü

+0

"% # 08x" yi deneyin. – user3386109

+0

Homebrew sabit genişlik türleri kullanmayın! Stdint.h' ve 'limit.h' kullanın. İkincisi stdlib biçimindeki dizeler için makro içerir. 'ın' 32 bit olması garanti edilmez. – Olaf

+1

Ve 'dan 'uint32_t' türlerini kullanırsanız, büyük harf altı (tam olarak, printf (" Offset: 0x% .8 "PRIX32" \) belirtmek için '' dan 'PRIX32' kullanılmalıdır. n ", OFFSET)"). Onaltılık çıkıştan önce # '' 0x' veya '0X' basmakla birlikte,' x' 'nin durumu, onaltılık hanelerin durumuyla aynıdır. Küçük harf 'x' ve büyük harf hex basamaklarını tercih edersiniz (ben de yaparım), bu yüzden standart formatlar sizin gereksinimlerinize göre çalışmaz. –

cevap

0

%x onaltılı çıktı için printf biçimidir:

0

baskı tabanında işaretsiz tamsayı olarak gelen size_t argüman anlamına 10.

Ne istiyorsun öneki olmadan onaltılık işaretsiz bir tamsayı yazdırmak için %x olduğu; 0x önekini gerçekten istiyorsanız, %#x kullanın.

İlgili konular