Referência da Linguagem C
Este é um manual de referência rápida — não precisa ler de capa a capa. Apenas consulte quando precisar.
Referência Rápida de Palavras-chave
Palavras-chave C89 (32)
Palavra-chave
Descrição
auto
Duração de armazenamento automática (padrão)
break
Sair do laço ou switch
case
Rótulo de ramo do switch
char
Tipo caractere
const
Qualificador constante
continue
Saltar para a próxima iteração do laço
default
Ramo padrão do switch
do
Laço do-while
double
Ponto flutuante de dupla precisão
else
Ramo else do if-else
enum
Tipo enumeração
extern
Declaração de ligação externa
float
Ponto flutuante de precisão simples
for
Laço for
goto
Salto incondicional
if
Instrução condicional
int
Tipo inteiro
long
Qualificador de inteiro longo
register
Dica de armazenamento em registrador
return
Retorno de função
short
Qualificador de inteiro curto
signed
Qualificador com sinal
sizeof
Obter tamanho do tipo ou variável
static
Duração de armazenamento estática ou ligação interna
struct
Estrutura
switch
Seleção multi-ramo
typedef
Alias de tipo
union
União
unsigned
Qualificador sem sinal
void
Tipo vazio
volatile
Qualificador para prevenir otimização
while
Laço while
Palavras-chave Novas do C99 (5)
Palavra-chave
Descrição
_Bool
Tipo booleano (geralmente via macro bool)
_Complex
Tipo número complexo
_Imaginary
Tipo número imaginário
inline
Dica de função inline
restrict
Restrição de aliasing de ponteiro
Palavras-chave Novas do C11 (7)
Palavra-chave
Descrição
_Alignas
Especificador de alinhamento
_Alignof
Obter requisito de alinhamento
_Atomic
Tipo atômico
_Generic
Seleção genérica
_Noreturn
Função não retorna
_Static_assert
Asserção estática
_Thread_local
Armazenamento local de thread
Especificador
Tipo de Saída
Exemplo
%d / %i
Inteiro decimal com sinal
printf("%d", 42) → 42
%u
Inteiro decimal sem sinal
printf("%u", 42U) → 42
%o
Octal sem sinal
printf("%o", 8) → 10
%x
Hexadecimal sem sinal (minúsculas)
printf("%x", 255) → ff
%X
Hexadecimal sem sinal (maiúsculas)
printf("%X", 255) → FF
%f
Ponto flutuante decimal
printf("%f", 3.14) → 3.140000
%e
Notação científica (e minúsculo)
printf("%e", 0.001) → 1.000000e-03
%E
Notação científica (E maiúsculo)
printf("%E", 0.001) → 1.000000E-03
%g
Seleção automática %f ou %e
printf("%g", 0.0001) → 0.0001
%c
Caractere
printf("%c", 'A') → A
%s
String
printf("%s", "oi") → oi
%p
Endereço de ponteiro
printf("%p", ptr) → 0x7ffd...
%ld
long
printf("%ld", 100000L)
%lld
long long
printf("%lld", 1LL<<40)
%zu
size_t
printf("%zu", sizeof(int))
%%
Próprio sinal de percentual
printf("100%%") → 100%
Modificadores do printf
Modificador
Significado
Exemplo
%-
Alinhar à esquerda
"%-10s"
%0
Preencher com zeros
"%05d" → 00042
%m
Largura mínima do campo
"%10d"
%.n
Precisão
"%.2f" → 3.14
Especificador
Tipo de Leitura
%d
int
%u
unsigned int
%ld
long
%f
float
%lf
double
%c
Caractere
%s
String (para em espaço em branco)
%[...]
Conjunto de scan
%*d
Ler mas descartar
Tabela de Caracteres de Escape
Sequência de Escape
Significado
Valor ASCII
\a
Alerta (sino)
7
\b
Retrocesso
8
\f
Alimentação de formulário
12
\n
Nova linha
10
\r
Retorno de carro
13
\t
Tabulação horizontal
9
\v
Tabulação vertical
11
\\
Barra invertida
92
\'
Aspas simples
39
\"
Aspas duplas
34
\0
Caractere nulo
0
\ooo
Valor octal
—
\xhh
Valor hexadecimal
—
Tabela de Precedência de Operadores
Listados da maior para a menor precedência. Operadores na mesma linha têm precedência igual:
Precedência
Operadores
Associatividade
Descrição
1
() [] -> . ++(pós-fixado) --(pós-fixado)
Esquerda→Direita
Pós-fixado
2
++(pré-fixado) --(pré-fixado) + - ! ~ *(desreferência) &(endereço) sizeof (tipo)
Direita→Esquerda
Unário
3
* / %
Esquerda→Direita
Multiplicativo
4
+ -
Esquerda→Direita
Aditivo
5
<< >>
Esquerda→Direita
Deslocamento
6
< <= > >=
Esquerda→Direita
Relacional
7
== !=
Esquerda→Direita
Igualdade
8
&
Esquerda→Direita
AND bit a bit
9
^
Esquerda→Direita
XOR bit a bit
10
|
Esquerda→Direita
OR bit a bit
11
&&
Esquerda→Direita
AND lógico
12
||
Esquerda→Direita
OR lógico
13
?:
Direita→Esquerda
Condicional
14
= += -= *= /= %= &= ^= |= <<= >>=
Direita→Esquerda
Atribuição
15
,
Esquerda→Direita
Vírgula
💡 Dica: Mnemônico: Unário → Multiplicativo → Aditivo → Deslocamento → Relacional → Igualdade → AND bit a bit → XOR → OR bit a bit → AND lógico → OR lógico → Condicional → Atribuição → Vírgula
Referência de Funções de Cabeçalhos Comuns
stdio.h
Função
Finalidade
printf
Saída formatada para stdout
fprintf
Saída formatada para arquivo
sprintf
Saída formatada para string
snprintf
Saída formatada para string (segura)
scanf
Leitura formatada de stdin
fscanf
Leitura formatada de arquivo
sscanf
Leitura formatada de string
fopen
Abrir arquivo
fclose
Fechar arquivo
fgetc
Ler um caractere
fputc
Escrever um caractere
fgets
Ler uma linha
fputs
Escrever string
fread
Leitura binária
fwrite
Escrita binária
fseek
Definir posição do arquivo
ftell
Obter posição do arquivo
rewind
Resetar posição do arquivo para o início
feof
Verificar final do arquivo
ferror
Verificar erro do arquivo
fflush
Descarregar buffer
remove
Excluir arquivo
rename
Renomear arquivo
tmpfile
Criar arquivo temporário
perror
Imprimir mensagem de erro
stdlib.h
Função
Finalidade
malloc
Alocação dinâmica de memória
calloc
Alocar e zerar memória
realloc
Realocar memória
free
Liberar memória
atoi
String para int
atol
String para long
atof
String para double
strtol
String para long (segura)
strtod
String para double (segura)
rand
Gerar número aleatório
srand
Definir semente aleatória
qsort
Ordenação rápida
bsearch
Busca binária
abs
Valor absoluto inteiro
labs
Valor absoluto long
exit
Terminar programa
atexit
Registrar função de saída
system
Executar comando do sistema
getenv
Obter variável de ambiente
string.h
Função
Finalidade
strcpy
Cópia de string
strncpy
Cópia de string (segura)
strcat
Concatenação de strings
strncat
Concatenação de strings (segura)
strcmp
Comparação de strings
strncmp
Comparação de strings (com comprimento)
strlen
Comprimento da string
strchr
Encontrar caractere (da esquerda)
strrchr
Encontrar caractere (da direita)
strstr
Encontrar substring
strtok
Tokenização de string
memcpy
Cópia de memória
memmove
Movimentação de memória (permite sobreposição)
memset
Preenchimento de memória
memcmp
Comparação de memória
math.h
Função
Finalidade
fabs
Valor absoluto de ponto flutuante
sqrt
Raiz quadrada
pow
Potência
ceil
Arredondar para cima
floor
Arredondar para baixo
round
Arredondar para o mais próximo
fmod
Resto de ponto flutuante
log
Logaritmo natural
log10
Logaritmo comum
sin
Seno
cos
Cosseno
tan
Tangente
asin
Arco seno
acos
Arco cosseno
atan
Arco tangente
atan2
Arco tangente (dois argumentos)
ctype.h
Função
Finalidade
isalpha
É letra
isdigit
É dígito
isalnum
É letra ou dígito
isupper
É maiúscula
islower
É minúscula
isspace
É espaço em branco
ispunct
É pontuação
isprint
É imprimível
toupper
Converter para maiúscula
tolower
Converter para minúscula
time.h
Função/Macro
Finalidade
time
Obter tempo atual
clock
Obter ticks de clock da CPU
localtime
Converter para tempo local
gmtime
Converter para tempo UTC
strftime
Formatar tempo
difftime
Calcular diferença de tempo
mktime
Converter tm para time_t
CLOCKS_PER_SEC
Ticks de clock por segundo
assert.h
Função/Macro
Finalidade
assert(expr)
Asserção; terminar em caso de falha
NDEBUG
Desabilitar assert quando definido
errno.h
Símbolo
Finalidade
errno
Variável global de código de erro
EDOM
Erro de domínio
ERANGE
Erro de intervalo
Referência Rápida de Intervalos de Tipos de Dados
Tipo
Tamanho (bytes)
Mínimo
Máximo
char
1
-128
127 ou 0/255
signed char
1
-128
127
unsigned char
1
0
255
short
2
-32768
32767
unsigned short
2
0
65535
int
4
-2147483648
2147483647
unsigned int
4
0
4294967295
long
4/8
Dependente da plataforma
Dependente da plataforma
unsigned long
4/8
0
Dependente da plataforma
long long
8
-9223372036854775808
9223372036854775807
float
4
~1.2e-38
~3.4e+38
double
8
~2.2e-308
~1.8e+308