Dobragem constante
expressões com operandos constantes podem ser avaliadas em tempo de compilação, melhorando assim o desempenho em tempo de execução e reduzindo o tamanho do Código, evitando a avaliação em tempo de compilação.
exemplo:
no fragmento de código abaixo, a expressão (3 + 5) pode ser avaliada no tempo de compilação e substituída pela constante 8.
int f (void){ return 3 + 5;}
abaixo está o fragmento de código após dobragem constante.
int f (void){ return 8;}
notas:
dobrar constante é uma otimização relativamente fácil.
programadores geralmente não escrevem expressões como (3 + 5) diretamente, mas estas expressões são relativamente comuns após a expansão macro e outras otimizações, tais como propagação constante.
todos os compiladores C podem dobrar expressões constantes de inteiros que estão presentes após a expansão da macro (requisito ANSI C). A maioria dos compiladores C pode dobrar expressões constantes de inteiros que são introduzidas após outras otimizações.
alguns ambientes suportam vários modos de arredondamento de vírgula flutuante que podem ser alterados dinamicamente em tempo de execução. Nestes ambientes, expressões como (1.0 / 3.0) devem ser avaliadas em tempo de execução se o modo de arredondamento não for conhecido em tempo de compilação.