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

Referência Rápida de Especificadores de Formato

Especificadores de Formato do printf

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

Especificadores de Formato do scanf

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
100%