[cpl] Răspuns: [Tema2] Nelamurire test assign_mismatch2

Marius-Cristian E?EANU marius.eseanu at cti.pub.ro
Sat Dec 5 18:04:10 EET 2015


Salut,

Una din ramuri e de tipul String, iar  cealalta de tipul Int - > get commonType intoarce Void .
Atunci o sa ai Sting (s) = void (if) => eroare 

Cristi

________________________________________
From: cpl <cpl-bounces at cursuri.cs.pub.ro> on behalf of Ioana Ciornei via cpl <cpl at cursuri.cs.pub.ro>
Sent: Friday, December 4, 2015 5:29 PM
To: Georgiana Diana; Compilatoare
Subject: Re: [cpl]      Răspuns: [Tema2] Nelamurire test assign_mismatch2

2015-12-02 13:39 GMT+02:00 Georgiana Diana via cpl <cpl at cursuri.cs.pub.ro>:
> In cazul Int si String n-ar trebui sa se intoarca, totusi String ? Pentru ca
> se face conversie automata de la Int la String. Si atunci ar fi compatibile
> cele doua tipuri.

Voi v-ati prins care dintre cele doua bucati de cod ar trebui sa dea o eroare?

Daca e vorba de compatibilitatea celor doua tipuri de pe cele doua
ramuri atunci s-ar "arunca" cu un WrongTypeException (asa e indicat in
TODO-urile de la IfStatement). Pe de alta parte, nu reusesc sa gasesc
in manual ceva sa interzica convertirea unui numar negativ la String.

Mersi,

Ioana

>
> 2015-12-02 13:08 GMT+02:00 Maxim Domentii via cpl <cpl at cursuri.cs.pub.ro>:
>>
>> Salut,
>>
>> Cred ca am gasit raspunsul la intrebarea mea.
>>
>> Cred ca "tipurile intoarse de cele doua ramuri sunt compatibile" din
>> specificatiile if-ului din manualul de lcpl ar insemna ca tipurile intoarse
>> de cele doua ramuri ale unui if trebui sa aiba un tip de baza comun.
>>
>> In cazul testului assign_mismatch2 tipurile intoarse de cele doua ramuri
>> sunt Int si String. Aceste doua tipuri nu au un tip de baza comun.
>>
>> Max.
>>
>>
>>
>> În Marţi, 1 Decembrie 2015 0:13:45, Maxim Domentii via cpl
>> <cpl at cursuri.cs.pub.ro> a scris:
>>
>>
>> Salut,
>>
>> Puteti sa-mi explicati va rog de ce testul assign_mismatch2 trebuie sa
>> arunce o exceptie de tipul IncompatibleOperandsException?
>> O banuiala pe care o am eu este la operatorul binar "+" pentru operanzii
>> "Minus" (String) si operatorul unar "-x" (Int).
>> Nu se poate aplica operatorul "+" pentru un String si un numar negativ?
>>
>> IncompatibleOperandsException s-ar mai putea arunca la assignment care se
>> face intre un String si o intructiune if. If-ul intoarce pe ramura then un
>> String (presupunand ca nu e nici un fel de problema cu operatorul binar de
>> mai sus) si un int pe ramura else. Ce inseamna mai exact:
>>
>> "Tipul if-ului este tipul ultimei instructiuni din cele doua ramuri, sau
>> tipul Void in cazul in care [...] tipurile intoarse de cele doua ramuri nu
>> sunt compatibile (unul din ele nu se poate converti catre celalalt)"
>>
>> - ultima instructiune din cele doua ramuri?
>> - unul din ele nu se poate converti catre celalalt?
>>
>> Multumesc.
>>
>> Max
>>
>> _______________________________________________
>> cpl mailing list
>> cpl at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
>>
>>
>>
>> _______________________________________________
>> cpl mailing list
>> cpl at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
>>
>
>
>
> --
> Georgiana Diana Ciocirdel
> Polytechnic University of Bucharest,
> Computer Science
>
> _______________________________________________
> cpl mailing list
> cpl at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
>
_______________________________________________
cpl mailing list
cpl at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl


More information about the cpl mailing list