Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Boxa membrana tweeter infundata

ajutor

Whisky for Mac

Xiaomi 14 Gpay
 Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...
 De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...

Scor FICO minim

Tonometru compensat CAS?
 polita RCA ONLINE

Termostat frigider - verificare

Mai au PC-urile vreun viitor?

Centrala termica immergas
 

Diferența sintactică între type casting și type conversion

- - - - -
  • Please log in to reply
1 reply to this topic

#1
Rhesus

Rhesus

    Senior Member

  • Grup: Senior Members
  • Posts: 2,882
  • Înscris: 22.04.2014
Continui cu articolele mele legate mai mult de mecanismul din spatele codului pe care transpirăm Posted Image, tocmai pt. a cunoaște ce se întâmplă în spatele unor simple tastări de cuvinte cheie.

Pe tot Internetul, inclusiv pe stackoverflow, există o dezbatere intensă pe tema Type Casting vs. Type Conversion. Ba că sunt definite de la caz la caz, ba că sunt definite diferit în funcție de limbajul de programare (de documentație).

Totuși, părerile oficiale ale dezvoltatorilor (MS), spun așa:

1. Type casting, pornind de la definiția casting-ului (to cast = a arunca, de unde și to cast a spell = a arunca o vrajă), reprezintă mai mult sugerat dpdv sintactic operația pe care o arunc asupra unui tip. Asemănător invocării unei metode.

2. Type conversion reprezintă, mult mai tehnic vorbind, ansamblul tuturor operațiilor survinte în momentul transformării efective a unui tip de dată în alt tip de dată.

double d = 22.5;
int i = (int) d ;

Avem un type conversion explicit, în care cast-ul este defapt operația de aruncare (folosesc cat mai des definiția termenului) a blestemului (alias operatorul de cast (type) d;

Conversia este mecanismul din spatele transformării numărului flotant d 22.5, în 22 (respectiv operațiile aduse mantisei, exponentului, normalizarea, în alte cazuri etc.)

Practic conversia se face prin aplicarea unui operator de cast asupra unui tip (a unei variabile sau obiect,mai corect spus). (în cazul conversiei explicite).

String s = "Hello";
String s2 = (string) s;
// Un exemplu mai cu sens, decat cel de sus
Object o = "Hello";
String s = (string) o; // unboxing.


Conform teoriei specialiștilor, în cazul de mai sus, deși avem implicată noțiunea de cast, nu avem de a face cu conversii. De ce ? Pentru că asupra conținutului, nu operăm absolut deloc. Așadar, deși avem operatorul de cast, primul caz fiind un non-sens - dar ca exemplu este foarte bun -, nu se operează deloc asupra șirului de caractere (respectiv Hello).

Ce părere aveți voi ?

Edited by Rhesus, 04 October 2015 - 17:53.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nu stiu de unde ai scos "String" ala, dar pute a C# (pe aria C++, C# pute).

Conversie inseamna mai multe. Nu are rost sa povestesc ceea ce e descris foarte bine aici: http://www-h.eng.cam... /tic0129.html

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate