Identificadores
São nomes usados para se fazer referência a variáveis, funções, rótulos e vários outros objetos definidos pelo usuário. O primeiro caracter deve ser uma letra ou um sublinhado. Os 32 primeiros caracteres de um identificador são significativos. É case sensitive, ou seja, as letras maiúsculas diferem das minúsculas.
int x; /*é diferente de int X;*/
Tipos
Quando você declara um identificador dá a ele um tipo. Os tipos principais podem ser colocados dentro da classe do tipo de objeto de dado. Um tipo de objeto de dados determina como valores de dados são representados, que valores pode
expressar, e que tipo de operações você pode executar com estes valores.
Tipos Inteiros
Uma implementação do compilador pode mostrar um faixa maior do que a mostrada na tabela, mas não uma faixa menor. As potencias de 2 usadas significam:
215 32.768
216 65536
231 2.147.483.648
232 4.294.967.298
Tipos Flutuantes
Ex:
main()
{
char c;
unsigned char uc;
int i;
unsigned int ui;
float f;
double d;
printf(“char %d”,sizeof(c));
printf(“unsigned char %d”,sizeof(uc));
printf(“int %d”,sizeof(i));
printf(“unsigned int %d”,sizeof(ui));
printf(“float %d”,sizeof(f));
printf(“double %d”,sizeof(d));
}
Operadores
Operador de atribuição
O operador de atribuição em C é o sinal de igual “=”. Ao contrário de outras linguagens, o operador de atribuição pode ser utilizado em expressões que também envolvem outros operadores.
Aritméticos
Os operadores *, /, + e – funcionam como na maioria das linguagens, o operador % indica o resto de uma divisão inteira.
i+=2; -> i=i+2;
x*=y+1; -> x=x*(y+1);
d-=3; -> d=d-3;
Ex:
main()
{i
nt x,y; x=10; y=3;
printf(“%d\n”,x/y);
printf(“%d\n”,x%y);
}
Operadores de relação e lógicos
Relação refere-se as relações que os valores podem ter um com o outro e lógico se refere às maneiras como essas relações podem ser conectadas. Verdadeiroé qualquer valor que não seja 0, enquanto que 0 é falso. As expressões que usam operadores de relação e lógicos retornarão 0 para falso e 1 para verdadeiro. Tanto os operadores de relação como os lógicos tem a precedência menor que os operadores aritméticos. As operações de avaliação produzem um resultado 0 ou 1.
relacionais lógicos
> maior que && and
>= maior ou igual || ou
< menor ! not
<= menor ou igual
== igual
!= não igual
Ex:
main()
{
int i,j;
printf(“digite dois números: “);
scanf(“%d%d”,&i,&j);
printf(“%d == %d é %d\n”,i,j,i==j);
printf(“%d != %d é %d\n”,i,j,i!=j);
printf(“%d <= %d é %d\n”,i,j,i<=j);
printf(“%d >= %d é %d\n”,i,j,i>=j);
printf(“%d < %d é %d\n”,i,j,i< j);
printf(“%d > %d é %d\n”,i,j,i> j);
}
Ex:
main()
{
int x=2,y=3,produto;
if ((produto=x*y)>0) printf(“é maior”);
}
Incremento e decremento
O C fornece operadores diferentes para incrementar variáveis. O operador soma 1 ao seu operando, e o decremento subtrai 1. O aspecto não usual desta notação é que podem ser usado como operadores pré-fixo(++x) ou pós-fixo(x++).
++x incrementa x antes de utilizar o seu valor.
x++ incrementa x depois de ser utilizado.
Ex:
main()
{
int x=0;
printf(“x= %d\n”,x++);
printf(“x= %d\n”,x);
printf(“x= %d\n”,++x);
printf(“x= %d\n”,x);
}
Precedência
O nível de precedência dos operadores é avaliado da esquerda para a direita.
Os parênteses podem ser utilizados para alterar a ordem da avaliação.
++ — mais alta
* / %
+ – mais baixa
Operador cast
Sintaxe:
(tipo)expressão
Podemos forçar uma expressão a ser de um determinado tipo usando o operador cast.
Ex:
main()
{
int i=1;
printf(“%d/3 é: %f”,i,(float) i/3);
}
Operador sizeof
O operador sizeof retorna o tamanho em bytes da variável, ou seja, do tipo que está em seu operando. É utilizado para assegurar a portabilidade do programa.