neden d Tamsayı için stand %mu?
Bu verimli değil, ama bir şekilde 1 ** aramalar için biçimlendirme kodları hatırlamak arıyorum. , *, *4%s
%p
hepsi ortada, ama %d
nereden geldiğini anlayamıyorum. %i
zaten başka bir şey alınır mı?
CEVAP
Açılımı "decimal" (10 tabanı), "tamsayı" değil. hexadecimal (baz 16), baskı için %x
ve octal yazdırma (8 tabanı) %o
. Bir tamsayı bu üslerin herhangi bir yerinde olabilir.
printf()
kullanabilirsiniz %i
eşanlamlı %d
, eğer bunu tercih ediyorsanız belirtmek için "tam sayı" yerine "onluk" ama %d
genellikle tercih olarak daha özel.
Giriş, scanf()
kullanarak %i
%d
de kullanabilir. %i
demek ayrıştırma gibi bir tamsayı herhangi bir baz (sekizlik, onaltılık veya ondalık olarak gösterilen bir 0
0x
önek), %d
demek çözümleme bir ondalık tamsayı.
İşte aksiyon hepsi bir örnek:
#include <stdio.h>
int main() {
int out = 10;
int in[4];
printf("%d %i %x %o\n", out, out, out, out);
sscanf("010 010 010 010", "%d %i %x %o", &in[0], &in[1], &in[2], &in[3]);
printf("%d %d %d %d\n", in[0], in[1], in[2], in[3]);
sscanf("0x10 10 010", "%i %i %i", &in[0], &in[1], &in[2]);
printf("%d %d %d\n", in[0], in[1], in[2]);
return 0;
}
Yani, tek kullanım %i
eğer istediğiniz giriş tabanına bağlı önek; eğer giriş temel olmalıdır sabit, bunu kullanmalısın %d
, %x
%o
. Özellikle 0
bir lider sekizlik modda koyar gerçeği yakalamak olabilir.
Neden bu kadar karmaşık kod iki güç ta...
Neden BOYUTU değişmeyen tek şey @Tamsa...
Neden char[] şifreler için Dize Java t...
Neden&; dizi yineleme için... "* o kad...
Bir tamsayı'in kare kökü belirlem...