Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Conversii de tip

c


Conversii de tip

Conversiile de tip apar atunci cand in expresii exista operanzi de tipuri diferite sau anumite functii necesita parametrii de un anume tip.

Exista 3 tipuri de conversii de tip:

a) Conversii de tip aritmetice implicite;



b) Comversii de tip prin atribuiri;

c) Conversii de tip explicite.

Conversii aritmetice implicite

Conversiile aritmetice implicite au loc dupa un numar mic de reguli. C 959g68j onsiderand o expresie cu doi operanzi avem:

n   daca unul din operanzi e double atunci celalalt este convertit la double si rezultatul va fi double;

n   daca unul din operanzi este long (intr-o expresie cu numere intregi ) celalalt este convertit la long si rezultatul este long;

n   daca unul din operanzi este unsigned , celalalt va fi convertit la unsigned si rezultatul va fi unsigned;

Tot ce e float e convertit la double . Rezulta ca toata aritmetica in virgula mobila se efectuaeaza in dubla precizie.

Daca intr-o expresie exista un operator * sau + si ca operanzi avem un intreg si un double atunci operandul de tip intreg se converteste la double si apoi se efectueaza operatia.

Exemplul 2.5.1.1.

char se converteste la int

Functia lower(c) converteste orice litera mare la litera mica . In rest caracterele raman nemodificate.

lower(c)

int c;

Observam in exemplul 2.5.1.1. ca apare o expresie aritmetica in care intervin coduri de caractere. In expresia din return totul se converteste la intreg dupa care se efectueaza operatiunile.

Conversii de tip prin atribuiri.

Aceste conversii au forma :

v = e

e va fi o expresie si v o variabila.

Tipul valorii membrului drept va fi convertit la tipul valorii membrului stang dupa urmatoarele reguli:

char int prin extindere de semn

int     char bitii superiori sunt eliminati

int float se face conversia fara probleme , se va pastra valoarea dar numarul va fi in virgula mobila

float int conversia se face prin trunchierea partii fractionare

double float conversia se face prin rotunjire

long int conversia se face prin eliminarea bitilor de rang superior

Exemplul 2.5.2.1.

Conversia char int

#include "static.h"

main()

Codul caracterului A este 65 . Deci de la un octet la 2 octeti cat are variabila d se va completa cu zerouri.

Sa vedem ce se intampla cand in variabila caracter se memoreaza o valoare negativa (primul bit 1).

Exemplul 2.5.2.2.

Conversia char int cand primul bit al variabilei este 1

#include <stdio.h>

main()

Rezultatul tiparit este FFA0. Rezulta ca prin aceasta conversie se face extensie de semn deci toti cei 8 biti superiorivor fi 1.

Conversia intreg carcater si caracter intreg pentru numere mai mici decat 128 nu schimba cu nimic valoarea numarului.

Exemplul 2.5.2.3.

#include <stdio.h>

main()

Rezultatul tiparit va fi in ambele cazuri 27.

Conversii explicite

Aceste conversii au loc prin folosirea unei constructii numite distribuite si anume :

Exemplul 2.5.3.1.

(nume-tip) expresie

(double) x ; (long) x;

De exemplu , functiile trigonometrice sin , cos, tg, opereaza cu argumente de tip double . Rezulta ca pentru calculul unei functii care asteapta un argument real procedam astfel:

int n;

sin((double)n);

Argumentul n se va converti la double si se va calcula sinusul. Tipul lui n nu se schimba.



Document Info


Accesari: 1588
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )