Conversão de Tipos Parte 1
Parte da seção Fundamentals do Journey de C da Coddy — lição 13 de 63.
A conversão de tipos (type casting) em C permite converter um valor de um tipo de dado para outro. Isso é útil quando você precisa realizar operações entre diferentes tipos de dados.
Existem dois tipos principais de conversão de tipos (type casting):
- Conversão implícita (automática)
- Conversão explícita (manual)
Vamos começar com o casting implícito:
A conversão implícita ocorre automaticamente ao converter de um tipo de dado menor para um maior:
int num = 10;
double decimal_num;
// Conversão implícita de int para double
decimal_num = num;Após executar o código acima, decimal_num terá o valor 10.0
Isso funciona porque um double pode armazenar todos os valores possíveis de um int sem perder nenhum dado. A conversão é segura, então o C a faz automaticamente.
Caminhos comuns de casting implícito:
- char → int → long → float → double
Agora vamos ver o casting explícito:
O casting explícito é feito manualmente colocando o tipo de dado de destino entre parênteses antes do valor que você deseja converter. Isso é necessário ao converter de um tipo de dado maior para um menor, onde pode ocorrer perda de dados:
double decimal_num = 5.65;
int num;
// Casting explícito de double para int
num = (int)decimal_num;Após executar o código acima, num terá o valor 5
Observe que a parte decimal é truncada (não arredondada) ao realizar o casting de double para int. A sintaxe para o casting explícito é:
(target_type) valueComo essa conversão pode perder dados, o C exige que você a faça explicitamente — isso informa ao compilador que você está ciente da potencial perda de dados.
Desafio
FácilEscreva um programa que:
- Declare uma variável double
resulte defina-a como 5.65 - Declare uma variável int
grade - Atribua o valor de
resultagradeusando casting explícito - Imprima o valor de
gradecom a mensagem "The grade is: " usando printf
Folha de consulta
Casting implícito — conversão automática de um tipo menor para um maior:
int num = 10;
double decimal_num = num; // torna-se 10.0Caminho comum de conversão implícita: char → int → long → float → double
Casting explícito — conversão manual usando (target_type) value:
double decimal_num = 5.65;
int num = (int)decimal_num; // torna-se 5 (truncado, não arredondado)Use casting explícito ao converter de um tipo maior para um menor, onde pode ocorrer perda de dados.
Experimente você mesmo
#include <stdio.h>
int main() {
double result = 5.65;
int grade;
// Use casting explícito para converter result (double) para grade (int)
printf("The grade is: %d\n", grade);
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentals
2Variáveis
Tipos de DadosInteiroFloat - DoubleCaracteresBooleanosConstantesFundamentos do printfRegras de Nomenclatura de VariáveisConversão de Tipos Parte 1Conversão de Tipos Parte 2Desafio de Recapitulação3Operadores
Operadores AritméticosOperador de MóduloIncremento/DecrementoOperadores de AtribuiçãoOperadores RelacionaisOperadores Lógicos Parte 1Operadores Lógicos Parte 2Operadores Lógicos Parte 3Desafio de Recapitulação