10 ŞUBAT 2012, Cuma
Nasıl C int64_t bir tür baskı için
C99 standart bayt boyutu gibi int64_t ile tamsayı türleri vardır. Aşağıdaki kodu kullanıyorum:
#include <stdio.h>
#include <stdint.h>
int64_t my_int = 999999999999999999;
printf("This is my_int: %I64d\n", my_int);
ve bu derleyici uyarı alıyorum:
warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’
Denedim:
printf("This is my_int: %lld\n", my_int); // long long decimal
Ama aynı uyarıyı alıyorum. Bu derleyici kullanıyorum:
~/dev/c$ cc -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c ,obj-c --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c /4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5664)
Hangi biçim bir uyarı olmadan my_int değişken yazdırmak için kullanılır?
CEVAP
10 ŞUBAT 2012, Cuma
int64_t
türü:
#include <inttypes.h>
int64_t t;
printf("%" PRId64 "\n", t);
uint64_t
türü:
#include <inttypes.h>
uint64_t t;
printf("%" PRIu64 "\n", t);
ayrıca onaltılık yazdırmak için PRIx64
kullanabilirsiniz.
Her türlü intptr_t
dahil olmak üzere mevcut makrolar (PRIxPTR
) cppreference.com has a full listing. SCNd64
gibi scanf için ayrı makro var.
PRİu16 tipik bir tanımı "hu"
sicim-sabit birleştirme derleme zamanında olur yani örtülü olurdu.
Tamamen taşınabilir olması için kod için PRId32
ve benzeri baskı için* *20 "%d"
int
yazdırma için benzer kullanmalısınız.
Bunu Paylaş:
Nasıl Python stderr için baskı?...
Nasıl baskı yeni satır veya boşluk olm...
Nasıl bir yöntem adı ve satır numarası...
Nasıl baskı başlık için HTML kullanmak...
Nasıl bir baskı Node.js yığın izlemesi...