Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Introdução à Programação/Tipos Básicos de Dados, Operadores e Expressões

De Wikiversidade

Tipos Básicos de Dados

[editar | editar código]

Os tipos de uma variável definem o tipo de dado que ela pode armazenar e ajudam tanto o compilador a alocar a memória corretamente quanto o desenvolvedor a estruturar seu código. Na linguagem C, os tipos básicos são: char, int, float, double e void. Cada tipo de variável ocupa um número específico de bytes na memória, o que determina a faixa de valores que pode ser armazenada. Por exemplo, uma variável do tipo int geralmente ocupa 4 bytes (32 bits) e pode armazenar números inteiros no intervalo de -2.147.483.648 a 2.147.483.647 (considerando um sistema com inteiros de 32 bits e sinalizados).

A tabela abaixo mostra os principais tipos e seus respectivos intervalos de valores (podendo variar conforme a arquitetura e o compilador):

TIPOS DE DADOS BÁSICOS
Tipo Bits Intervalo de Valores
char 8 Caracteres ASCII (0 a 255)
int 32 -2.147.483.648 A 2.147.483.647
float 32 1,175494E-038 A 3,402823E+038
double 64 2,225074E-308 A 1,797693E+308
void Não aplicavel Sem valor

Tipo char

[editar | editar código]

Esse tipo é utilizado para o armazenamento de um único caractere (ou número que o representa) representado por um código da tabela ASCII. Você pode encontrar a tabela completa aqui: Tabela ASCII.

Exemplo de declaração:

char caractereA = 'A';

// De forma alternativa
char caractereA = 65;

Nos tipos numéricos, podemos armazenar valores inteiros, ou seja, sem parte decimal, utilizando o tipo int. No entanto, é importante ter cuidado ao usá-lo em cálculos, pois qualquer parte decimal será descartada na atribuição.

Exemplo de declaração:

int num = 1

// Aqui o valor de num ainda é 1
int num = 1.1

Tipo float e double

[editar | editar código]

Os tipos float e double armazenam números com parte decimal, mas diferem na precisão. Enquanto float ocupa menos espaço e oferece precisão simples, double utiliza o dobro de bits, permitindo representar valores maiores com mais exatidão. A escolha entre eles depende do nível de precisão necessário.

Os tipos numéricos armazenam mais do que apenas o valor em si. Eles também reservam bits para informações como sinal, mantissa e expoente, no caso de números de ponto flutuante. Esses detalhes serão explorados mais adiante.

Exemplo de declaração:

float num = 2.234f;
double num = 4.23455449993;

Tipo void

[editar | editar código]

Esse é um tipo especial que será explorado em seções posteriores. Ele indica a ausência de um tipo específico e é utilizado em funções sem retorno, além de permitir a criação de ponteiros genéricos para armazenar endereços de qualquer tipo de dado.

Modificadores

[editar | editar código]

Outro elemento importante associado aos tipos são os modificadores. Eles podem ajustar a capacidade de um tipo, aumentando ou reduzindo sua precisão para otimizar o uso de memória. Além disso, permitem fixar a quantidade de bits utilizada, tornando o comportamento do tipo consistente, independentemente do processador. Basta adicionar antes do tipo na declaração, veja o modelo:

<modificadores> <tipo> <nome da variável> = <valor>

// Exemplo
unsigned int num = 4;


Veja a tabela completa com os tipos e seus modificadores:

TIPOS E MODIFICADORES
TIPO BITS INTERVALO DE VALORES
char 8 -128 A 127
unsigned char 8 0 A 255
signed char 8 -128 A 127
int 32 -2.147.483.648 A 2.147.483.647
unsigned int 32 0 A 4.294.967.295
signed int 32 -32.768 A 32.767
short int 16 -32.768 A 32.767
unsigned short int 16 0 A 65.535
signed short int 16 -32.768 A 32.767
long int 32 -2.147.483.648 A 2.147.483.647
unsigned long int 32 0 A 4.294.967.295
signed long int 32 -2.147.483.648 A 2.147.483.647
float 32 1,175494E-038 A 3,402823E+038
double 64 2,225074E-308 A 1,797693E+308
long double 96 3,4E-4932 A 3,4E+4932

Operadores e Expressões

[editar | editar código]

Em C, os operadores são símbolos usados para realizar cálculos, comparações e operações bit a bit. As expressões combinam operadores, variáveis e valores para produzir um resultado. Cada operador possui uma ordem de precedência, definindo a sequência de execução das operações. Além disso, a associatividade indica se a avaliação ocorre da esquerda para a direita ou vice-versa. Parênteses podem ser usados para modificar a ordem padrão.

Veja a lista de operadores organizados por ordem de precedência:

Ordem de Precedência dos Operadores em C
Precedência Operadores Descrição Associatividade
1 (mais alta) (), [], ->, . Parênteses, índice de array, acesso a membro via ponteiro e ponto Esquerda para direita
2 ++, --, + (unário),

- (unário), !, ~, * (ponteiro), &, (type), sizeof

Incremento/decremento, unários, negação, bitwise NOT, ponteiro, referência, cast e tamanho de tipo Direita para esquerda
3 *, /, % Multiplicação, divisão e módulo Esquerda para direita
4 +, - Adição e subtração Esquerda para direita
5 <<, >> Deslocamento de bits Esquerda para direita
6 <, <=, >, >= Comparação Esquerda para direita
7 ==, != Igualdade e diferença Esquerda para direita
8 & AND bit a bit Esquerda para direita
9 ^ XOR bit a bit Esquerda para direita
10 | OR bit a bit Esquerda para direita
11 && AND lógico Esquerda para direita
12 || OR lógico Esquerda para direita
13 ?: Operador ternário Direita para esquerda
14 =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= Atribuição Direita para esquerda
15 (mais baixa) , Vírgula (avaliação múltipla) Esquerda para direita