Pas tout à fait : le compilateur raisonne bien en termes d'entiers « infinis » et lorsqu'il raisonne lors de la phase d'analyse sémantique ou bien lors des phases d'optimisation dans le middle-end. Par exemple :
floatf=fabs(some_float);if(f>0){// always true -- compiler should be able to simplify branch/* ... */}else{/* ... */}
ou bien
inta=...,b=...;if(a>0&&b>0&&a+b<0){/* not possible, a > 0, b > 0 → a+b > 0, ALWAYS ! */}
Un compilateur aura le droit d'optimiser ces branchements car fabs est une fonction de la libC, donc « magique » et que dans le deuxième cas, le compilateur ne considère pas les limites « physiques » des entiers considérés, mais juste les relations entre eux.
[^] # Re: Pascal...
Posté par lasher . En réponse au journal Python comme premier langage de programmation ?. Évalué à 1.
Pas tout à fait : le compilateur raisonne bien en termes d'entiers « infinis » et lorsqu'il raisonne lors de la phase d'analyse sémantique ou bien lors des phases d'optimisation dans le middle-end. Par exemple :
ou bien
Un compilateur aura le droit d'optimiser ces branchements car
fabsest une fonction de la libC, donc « magique » et que dans le deuxième cas, le compilateur ne considère pas les limites « physiques » des entiers considérés, mais juste les relations entre eux.