Constant Folding
a konstans operandusú kifejezések kiértékelhetők fordítási időben, ezáltal javítva a futásidejű teljesítményt és csökkentve a kód méretét azáltal, hogy elkerüljük a fordítási időben történő kiértékelést.
példa:
az alábbi kódrészletben a (3 + 5) kifejezés fordításkor kiértékelhető, és helyettesíthető a 8 állandóval.
int f (void){ return 3 + 5;}
az alábbiakban látható a kódrészlet állandó hajtogatás után.
int f (void){ return 8;}
Megjegyzések:
az állandó hajtogatás viszonylag egyszerű optimalizálás.
a programozók általában nem írnak közvetlenül olyan kifejezéseket, mint a (3 + 5), de ezek a kifejezések viszonylag gyakoriak a makró bővítés és más optimalizálások, például az állandó szaporítás után.
minden C fordító egész konstans kifejezéseket hajthat végre, amelyek a makró bővítése után vannak jelen (ANSI C követelmény). A legtöbb C fordító egész állandó kifejezéseket hajthat végre, amelyeket más optimalizálások után vezetnek be.
egyes környezetek számos lebegőpontos kerekítési módot támogatnak, amelyek menet közben dinamikusan módosíthatók. Ezekben a környezetekben az (1.0 / 3.0) kifejezéseket futási időben kell értékelni, ha a kerekítési mód fordításkor nem ismert.