C-Type Casting
converter um tipo de dados em outro é conhecido como casting Tipo ou, Conversão Tipo. Por exemplo, se você quiser armazenar um valor ‘longo’ em um inteiro simples, então você pode digitar “Longo” Para “inteiro”. Você pode converter os valores de um tipo para outro explicitamente usando o operador de conversão da seguinte maneira −
(type_name) expression
Considere o seguinte exemplo onde o operador de conversão faz com que a divisão de uma variável de número inteiro por outro para ser executada como uma operação de ponto flutuante −
#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}
Quando o código é compilado e executado, produz o seguinte resultado −
Value of mean : 3.400000
por Isso, deve-se notar aqui que o operador de conversão tem precedência sobre a divisão, então o valor da soma é convertido para o tipo double e, finalmente, ele fica dividido por contagem que dá um valor duplo.
tipo conversões podem ser implícitas que são realizadas pelo compilador automaticamente, ou pode ser especificado explicitamente através do uso do operador de elenco. Considera-se boa prática de programação utilizar o operador cast sempre que são necessárias conversões de tipo.
promoção inteira
promoção inteira é o processo pelo qual os valores do tipo inteiro “menor” do que o inteiro ou sem sinal inteiro são convertidos para inteiro ou sem sinal. Considere um exemplo de adição de um personagem com um inteiro
#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum );}
Quando o código é compilado e executado, ele produz o seguinte resultado −
Value of sum : 116
Aqui, o valor de soma é 116 porque o compilador faz inteiro promoção e convertendo o valor de ‘c’ para ASCII antes de executar a real operação de adição.
conversão aritmética Usual
as conversões aritméticas usuais são implicitamente realizadas para lançar seus valores para um tipo comum. O compilador executa pela primeira vez a promoção de inteiros; se os operandos ainda têm tipos diferentes, então eles são convertidos para o tipo que aparece na parte mais alta na hierarquia a seguir −
O costume conversões aritméticas não são executadas para os operadores de atribuição, nem para os operadores lógicos && e ||. Tomemos o seguinte exemplo para entender o conceito −
#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum );}
Quando o código é compilado e executado, ele produz o seguinte resultado −
Value of sum : 116.000000
Aqui, é simples compreender que primeiro c é convertido para inteiro, mas como o valor final é o dobro, aritméticos usuais de conversão aplica-se e o compilador converte i e c em ‘float’ e adiciona-los a dar um ‘float’ resultado.
Leave a Reply