Você está na página 1de 2

Marcadores para números inteiros (%i, %d, %o e %x)

A essa altura já é necessário saber a diferença entre utilizar %i, %d ou %x quando falamos em inserção de
marcadores nos comandos de entrada (como o scanf) e de saída (como o printf).

Vocês deverão se lembrar de eletrônica digital, quanto provavelmente trabalharam conversão numérica
entre sistemas binário, octal, decimal e hexadecimal. Pois bem... quando trabalhamos com números em C,
também podemos inserir valores diretamente em qualquer desses sistemas: octal, decimal ou hexadecimal.

Embora a grande maioria dos programas que faremos nessa disciplina trabalhem com números decimais,
convém saber como utilizar a inserção de números octais ou hexadecimais.

Através do comando scanf, o usuário pode inserir o valor numérico inteiro em qualquer desses sistemas
(octal, decimal ou hexadecimal), desde que digite o número seguindo as regras da tabela a seguir:

Sistema de numeração Estrutura do número Exemplo


Número começando com 0 (zero). Obviamente, não podem ser
Octal (0 ~ 7) utilizados os algarismos 8 e 9, pois eles não fazem parte desse 025
sistema de numeração.

Decimal (0 ~ 9) Digitar o número como estamos habituados, sem zero à esquerda. 21

Hexadecimal (0 ~ F) Digitar o número começando com 0x. 0x15

Para isso, basta utilizarmos a sintaxe:

printf(“%i”,&Variavel_int);

Obs. 1: Nesse caso, o valor digitado será armazenado na variável chamada Variavel_int (nome utilizado aqui
apenas como exemplo).

Obs. 2: Essas são as mesmas regras para o uso dos números dentro do código fonte. Por exemplo: se for feita
uma atribuição com o comando , a variável receberá o valor decimal 33 (41
em octal, pois o valor foi inserido iniciando em 0 “zero”).

Ainda utilizando o comando scanf, se não desejarmos dar ao usuário a opção de escolher em qual sistema
de numeração ele deve inserir o valor, podemos fixar o sistema de numeração por meio do marcador:

Marcador Sistema de numeração


%d Decimal
%x Hexadecimal
%o Octal

Exemplos:

Valor digitado Valor equivalente em


Comando Sistema
pelo usuário decimal
1c 28
scanf(“%x”,&Variavel_int); Hexadecimal
24 36
scanf(“%o”,&Variavel_int); Octal 23 19
scanf(“%d”,&Variavel_int); Decimal 35 35

Prof. Keth Rousbergue Maciel de Matos - IFSP


Como na maioria dos nossos programas, utilizamos o sistema decimal, para o comando printf, não costuma
fazer diferença entre utilizar marcador %d ou %i, pois ambos, nesse caso, mostrariam o número decimal.
Todavia, existe a possibilidade de exibirmos na tela os números também nos sistemas octal e hexadecimal.
Para isso, basta utilizar os marcadores %o e %x, respectivamente, no comando printf. Veja o exemplo do
programa a seguir que exibe um mesmo número da variável x em 3 sistemas diferentes:

Tela que esse programa gera (exibindo o mesmo número nos diferentes sistemas):

Prof. Keth Rousbergue Maciel de Matos - IFSP

Você também pode gostar