SORU
16 Kasım 2012, Cuma


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
16 Kasım 2012, Cuma


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.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • Emotional Trancer

    Emotional Tr

    4 Mart 2010
  • Skrillex

    Skrillex

    6 NİSAN 2010