Manual da Linguagem GNU C
Doar para o tradutorDoar para os autores
  • Linguagem GNU C
  • Prefácio
  • 1️1. O Primeiro Exemplo
    • Fibonacci Recursiva
      • Cabeçalho da Função
      • Corpo da Função
    • Pilha e Estouro de Pilha
    • Fibonacci Iterativa
  • 📦2. Um Programa Completo
    • Exemplo de um Programa Completo
    • Explicação do Programa Completo
    • Programa Completo Linha por Linha
    • Compilando o Programa de Exemplo
  • 👜3. Armazenamento e Dados
  • 🥑4. Além dos Inteiros
    • Um Exemplo com Números Não Inteiros
    • Um Exemplo com Arrays
    • Variações para o Exemplo com Array
  • ✍️5. Sintaxe Lexical
    • Escreva Programas em Inglês!
    • Caracteres
    • Espaços em Branco
    • Comentários
    • Identificadores
    • Operadores e Pontuação
    • Continuação de Linha
  • ➕6. Aritmética
    • Aritmética Básica
    • Aritmética de Inteiros
    • Estouro de Inteiros
      • Estouro de Inteiros sem Sinal
      • Estouro de Inteiros com Sinal
    • Aritmética em Modo Misto
    • Divisão e Resto
    • Comparações Numéricas
    • Operações de Deslocamento
      • Deslocar Gera Novos Bits
      • Advertências em Operações de Deslocamento
      • Hacks com Deslocamento
    • Operações Bit-a-bit
  • 🟰7. Expressões de Atribuição
    • Atribuição Simples
    • Lvalues
    • Atribuição Modificadora
    • Operadores de Incremento e Decremento
    • Pós-incremento e Pós-decremento
    • Armadilha: Atribuição em Subexpressões
    • Escreva Atribuições em Instruções Separadas
  • 🕹️8. Expressões de Controle de Execução
    • Operadores Lógicos
    • Operadores Lógicos e Comparações
    • Operadores Lógicos e Atribuições
    • Expressão Condicional
    • Operador Vírgula
  • 🐫9. Gramática dos Operadores Binários
  • 🏁10. Ordem de Execução
    • Reordenação de Operandos
    • Associatividade e Ordenação
    • Pontos de Sequência
    • Pós-incremento e Ordenação
    • Ordenação de Operandos
    • Otimização e Ordenação
  • 🎲11. Tipos Primitivos
    • Tipos de Dados Inteiros
      • Inteiros Básicos
      • Tipos Com ou Sem Sinal
      • Inteiros Estreitos
      • Conversão entre Tipos Inteiros
      • Tipo Booleano
      • Variações de Inteiros
    • Tipos de Dados de Ponto Flutuante
    • Tipos de Dados Complexos
    • O Tipo Void
    • Outros Tipos de Dados
    • Designadores de Tipos
  • 🪨12. Constantes
    • Constantes do Tipo Inteiro
    • Tipos de Dados de Constantes do Tipo Inteiro
    • Constantes de Ponto Flutuante
    • Constantes de Números Imaginários
    • Constantes de Caracteres
    • Constantes do Tipo String
    • Constantes do Tipo String UTF-8
    • Códigos de Caracteres Unicode
    • Constantes do Tipo Caractere Largo
    • Constantes do Tipo String Larga
  • 📐13. Tamanho de Tipo
  • Apêndices
    • F - GNU Free Documentation License
    • G - GNU General Public License
Fornecido por GitBook
Nesta página

Isto foi útil?

Editar no GitHub
Exportar como PDF

Prefácio

AnteriorLinguagem GNU CPróximo1. O Primeiro Exemplo

Atualizado há 11 meses

Isto foi útil?

Este manual explica a linguagem C para uso com o GNU Compiler Collection (GCC) em sistema operacional GNU/Linux e em outros sistemas. Nós nos referimos a este dialeto como GNU C. Se você já sabe C, pode usar este manual como referência.

Se você sabe conceitos básicos de programação mas não sabe nada sobre C, você pode ler este manual sequencialmente desde o início para aprender a linguagem C.

Se você é iniciante em programação, recomendamos que você primeiro aprenda uma linguagem com coleta de lixo automática e sem ponteiros explícitos ao invés de começar com C. Boas opções incluem Lisp, Scheme, Python e Java. Por conta dos ponteiros explícitos da linguagem C, quem programa precisa ter cuidado para evitar certos tipos de erro ao utilizar a memória.

C é uma linguagem venerável; ela foi usada pela primeira vez em 1973. O GNU C Compiler, posteriormente ampliado a GNU Compiler Collection, foi lançado pela primeira vez em 1987. Outras importantes linguagens de programação foram desenhadas com base no C: uma vez que você saiba C, ele te dá uma base útil para aprender C++, C#, Java, Scala, D, Go e outras.

A vantagem especial de C é que ele ao mesmo tempo é simples e te dá um acesso próximo ao hardware do computador, o que anteriormente requeria escrever código em linguagem assembler para descrever instruções de máquina individuais. Algumas pessoas chamaram o C de "uma linguagem assembler de alto nível" por conta de seus ponteiros explícitos e a falta de gerenciamento automático de memória. Como disse alguém brincando, "C combina o poder da linguagem assembler com a conveniência da linguagem assembler". Todavia, C é muito mais portável e muito mais fácil de ler e de escrever que a linguagem assembler.

O livro chama de linguagem assembler o que normalmente no Brasil nos referimos como linguagem Assembly. Há pessoas que defendem que assembler é o compilador de Assembly, enquanto Assembly é a linguagem em si, mas no livro o autor chama a linguagem de assembler mesmo.

Este manual descreve a linguagem GNU C suportada pelo GNU Compiler Collection (GCC) desde 2017 aproximadamente. Por favor, nos informe se qualquer mudança for necessária para refletir a versão atual do GNU C.

Se uma determinada construção não estiver disponível ou funcionar de forma diferente em outros compiladores, nós avisaremos. Se uma construção não for parte do padrão ISO C, nós diremos que é uma "extensão GNU C", porque é útil que você saiba isso. Todavia, padrões e outros dialetos são tópicos secundários para este manual. Em razão da simplicidade, manteremos tais notas curtas, a menos que seja vital dizer mais sobre.

Alguns aspectos do significado de programas em C dependem da plataforma alvo: em qual computador e em qual o sistema operacional o código compilado vai rodar. Quando for este o caso, avisaremos também.

Raramente mencionamos C++ ou outras linguagens que o GCC suporta. Esperamos que este manual sirva de base para escrever manuais para estas linguagens, mas linguagens tão diferentes não podem compartilhar um manual comum.

A linguagem C não provê facilidades built-in (não traz facilidades nativas) para realizar operações como entrada e saída, gerenciamento de memória, manipulação de strings e similares. Ao invés disso, essas facilidades são providas pelas funções definidas na biblioteca padrão, que está automaticamente disponível em qualquer programa em C. Veja A Biblioteca C Padrão no Manual de Referência da Biblioteca GNU C.

A maioria dos sistemas GNU/Linux usa a biblioteca GNU C (glibc) para prover tais funcionalidades. Ela mesma é escrita em C, então uma vez que você saiba C, pode ler o código-fonte dela e ver como as funções da biblioteca fazem seu trabalho. Uma fração das funções é implementada como chamadas de sistema (system calls), o que significa que elas contêm uma instrução especial que pede ao kernel (do Linux) para realizar uma tarefa específica. Para entender como elas são implementadas, você precisaria ler o código-fonte do Linux. Se uma função da biblioteca é uma chamada de sistema ou não, é um detalhe interno de implementação e não faz diferença para quem vai chamar a função.

Este manual incorpora o antigo Manual do Pré-processador GNU C, que foi um dos primeiros manuais GNU. Ele também usa textos do antigo Manual do GNU C que foi escrito por Trevis Rothwell e James Youngman.

O GNU C tem vários recursos obscuros, cada um disponível seja por retrocompatibilidade ou para atender situações muito específicas. Nós os colocamos num manual complementar, o Manual de Obscuridades do GNU C, que será publicado digitalmente no futuro.

Por favor, reporte erros e sugestões (em inglês) para c-manual@gnu.org. Para erros de tradução, reporte .

aqui