

-----------------------------------

varadinagypal

13 Feb 2024 12:54



-----------------------------------

putina practica
=========

atribuirea se face la un float, dupa ce operatia s-a facut asupra unor inturi. 


putine teorie
========

Daca te-ai intalnit cu notatia poloneza care reflecta precedenta, asociativitatea etc:

1*(2+3) se scrie *+2,3,1

// varianta pentru muritori, cu functii de prototip: numar operator(operand1: numar, operand2: numar)

mul(1, add(2,3))

Sa se sesizeze ca si conversiile de tip (cast) dar si integer/float promotion (de pilda la sprintf, chiar si cand ele nu sunt scrise explicit) sunt functii cu un singur operand: f(x): y

unde x si y sunt variabile, adica perechi de { tip, valoare }

practica
=====

astfel, mai pe C-lang

int x = 3
int y = 1
int z = 1
// float a = toFloat(integerDivision(x, intAdd(y, z))
float a = x / (y+z);

rezultat: a == 1.00000000

teorie de limbaj si compilator
==================

python si cu javascript si cu php si c# si c si c++ si ce o mai fi, in functie de preferintele celor care au facut/comandat limbajul, de strictetea si garantiile / lejeritate care trebuie date de parser/compilator, la compiletime/runtime,

au alte idei despre type-inference, type-conversion, rotunjiri, despre teoria de tipuri, adica despre {tip, valoare} in general si conversiile de {tip1, valoare1} => {tip2, valoare2}, despre operator overload, in cazul c++ de pilda explicit, ori implicit la javascript unde problemele incep cu ordinea de numar+string sau string+numar, + fiind cu overload pentru concatenare si adunare aritmetica, dar - fiind doar scadere aritmetica

iti recomand, pe langa manualele de facultate sau liceu, unele de kkt, altele chiar bune, serialul lui Bartosz Milewski de pe youtube, despre teoria categoriilor, daca te intereseaza astfel de perversiuni intelectuale. Ca in practica, fix de din astea te vei lovi, si in python, si in C

