Ken Thompson e Dennis Ritchie (da esquerda para direita), os criadores das linguagens B e C,
respectivamente.
O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973.[5] de acordo
com Ritchie, o perodo mais criativo ocorreu em 1972. A linguagem foi chamada "C",
porque suas caractersticas foram obtidas a partir de uma linguagem anteriormente
chamado de " B", que de acordo com a Ken Thompson era verso reduzida da linguagem
de programao BCPL.[6]
A verso original PDP-11 do sistema Unix foi desenvolvido em assembly. Em 1973, com a
adio dos tipos struct , a linguagem C tornou-se poderosa o suficiente para que a maior
parte do kernel do Unix fosse reescrito em C. Este foi um dos primeiros ncleos de
sistemas operacionais implementados numa linguagem diferente da linguagem Assembly.
Em 1977, foram feitas novas mudanas por Ritchie e Stephen C. Johnson para facilitar a
portabilidade do sistema operacional Unix. OPortable C Compiler de Johnson serviu de
base para vrias implementaes de C em novas plataformas.[7]
Campos de nome struct num espao de nome separado para cada tipo struct
Enumeraes
Clculos de ponto-flutuante em preciso simples (no K&R C, os clculos
intermedirios eram feitos sempre em double , porque era mais eficiente na mquina
onde a primeira implementao do C foi feita)
Esta pgina ou seco cita fontes confiveis e independentes, mas que no cobrem todo o contedo (desde agosto de 2013
favor, adicione mais referncias e insira-as corretamente no texto ou no rodap. Material sem fontes poder ser removido.
Encontre fontes: Google (notcias, livros e acadmico)
Funes em linha
Adio de vrios tipos de dados novos, incluindo o long long int (para
minimizar problemas na transio de 32-bits para 64-bits), um tipo de dados boolean
explicito (chamado _Bool) e um tipo complex que representa nmeros complexos
Um sistema de tipos simples que evita vrias operaes que no fazem sentido
Parmetros que so sempre passados por valor para as funes e nunca por
referncia ( possvel simular a passagem por referncia com o uso de ponteiros)
Segurana de tipo
Clausuras
funes aninhadas
Sobrecarga de operadores
Meta-programao
Apesar da lista de caractersticas teis que C possui no ser longa, isso no tem sido um
impedimento sua aceitao, pois isso permite que novos compiladores de C sejam
escritos rapidamente para novas plataformas, e tambm permite que o programador
permanea sempre em controle do que o programa est a fazer. Isto o que por vrias
vezes permite o cdigo de C correr de uma forma mais eficiente que muitas outras
linguagens. Tipicamente, s cdigo de Assembly "afinado mo" que corre mais
rapidamente, pois possui um controle completo da mquina, mas avanos na rea de
compiladores juntamente com uma nova complexidade nos processadores modernos
permitiram que a diferena tenha sido rapidamente eliminada. Uma consequncia da
aceitao geral da linguagem C que frequentemente os compiladores, bibliotecas e at
intrpretes de outras linguagens de nvel maior sejam eles prprios implementados em C.
C tem como ponto forte, a sua eficincia, e a linguagem de programao preferida para o
desenvolvimento de sistemas e softwares de base, apesar de tambm ser usada para
desenvolver programas de computador. tambm muito usada no ensino de cincia da
computao, mesmo no tendo sido projetada para estudantes e apresentando algumas
dificuldades no seu uso. Outra caracterstica importante de C, sua proximidade do cdigo
de mquina, que permite que um projetista seja capaz de fazer algumas previses de
como o software ir se comportar, ao ser executado.
C tem como ponto fraco, a falta de proteo que d ao programador. Praticamente tudo
que se expressa em um programa em C, pode ser executado, como por exemplo, pedir o
vigsimo membro de um vetor com apenas dez membros. Os resultados so muitas vezes
totalmente inesperados, e os erros, difceis de encontrar.
disposio tratado como se fosse um ponteiro que aponta para o incio da disposio.
Em certas aplicaes no razovel usarem-se disposies de tipos de dimenso fixa e
por isso a alocao dinmica de memria pode ser usada para criar disposies de tipos
de dimenso varivel.
Como a linguagem C regularmente usada em programao de baixo-nvel de sistemas,
h casos em que necessrio tratar um nmero inteiro como sendo um ponteiro, um
nmero de ponto flutuante como sendo um nmero inteiro ou um tipo de ponteiro como
sendo outro. Para estes casos, a linguagem C fornece a capacidade de "moldagem"
(tambm denominado "converso de tipo" ou "casting"), uma operao que, caso seja
possvel, fora a converso de um objecto de um tipo para outro. Apesar de ser por vezes
necessrio, o uso de converses de tipo sacrifica alguma segurana oferecida pelo
sistema de tipos.
int
O tipo de dado int (inteiro) serve para armazenar valores numricos inteiros. Existem
vrios tipos de inteiros, cada um de um tamanho diferente (dependendo do sistema
operacional e/ou arquitetura do processador):
short int , deve possuir tamanho de no mnimo 16 bits e no pode ser maior
que int
O tipo de dado double serve para armazenar nmeros de ponto flutuante de dupla
preciso, normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade.
O padro mais adotado tambm o IEEE 754-1985.
struct
Em C podem ser usadas estruturas (chamados de registos em outras linguagens de
programao). As estruturas so grupos de variveis organizadas arbitrriamente pelo
programador. Uma estrutura pode criar um novo tipo de varivel caso typedef seja usado
em sua declarao.
em C encontram-se no espao local. Por outras palavras, isso significa que, em C++,
qualquer definio de qualquer funo em linha (sem ser a respeito da sobrecarga de
funes de C++) tem de estar em conformidade com a "regra de uma definio" da
linguagem C++. Mas em C, a mesma funo em linha pode ser definida de maneira
diferente em diferentes arquivos (ou ficheiros)
a palavra-chave inline
return 0;
}
Ou, equivalente:
# include <stdio.h>
typedef struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
} Pessoa;
int main()
{
Pessoa exemplo = {"Felipe", 16, "00.000.000-00"}; // declarao da
varivel "exemplo"
printf("Nome: %s\n", exemplo.nome);
printf("Idade: %hu\n", exemplo.idade);
printf("RG: %s\n", exemplo.rg);
getchar();
return 0;
}
Bloodshed Dev-C++
C++
Linguagem compilada
Linguagem de programao
Unix
Compilador
Referncias
1. Ir para cima History of the C Programming Language (em ingls). Visitado em 23 de maio
de 2010.
2. Ir para cima Programming Language Popularity (em ingls). Visitado em 23 de maio de
2010.
3. Ir para cima TIOBE Programming Community Index (em ingls). Visitado em 23 de maio
de 2010.
4. Ir para cima C The Influence Factor of Many Popular Programming Languages (em
ingls). Visitado em 23 de maio de 2010.
5. Ir para cima RITCHIE, Dennis M. (January 1993). The Development of the C Language.
Visitado em 1 January 2008. "The scheme of type composition adopted by C owes
considerable debt to Algol 68, although it did not, perhaps, emerge in a form that Algol's
adherents would approve of."
6. Ir para cima A Brief History of C
7. Ir para cima (1978) "Portability of C Programs and the UNIX System". Bell System Tech.
J. 57 (6): 20212048.
8. Ir para cima Entrevista com Dennis Ritchie, Bjarne Stroustrup e James
Gosling(Ingls) Java Report e C++ Report (Julho de 2000). Visitado em 3 de junho de
2015.
9. Ir para cima Kernighan, Brian W.; Ritchie, Dennis M. The C Programming Language (em
ingls). Upper Saddle River, New Jersey: Prentice hall, 1978. 228 p. ISBN 0-13-110163-3
10. Ir para cima Rosangle Hickson. Aprenda a programa em C, C++ e C#. 2a ed.
[S.l.]: Campus. p. 3. ISBN 978-85-352-1479-6
11. Ir para cima Microsoft d mais nfase ao C++ (em ingls). Visitado em 23 de maio de
2010.
12. Ir para cima Grupo de trabalho do ISO C (em ingls). Visitado em 23 de maio de 2010