Problema funzione pow

Buongiorno.
Avrei un altro problema.

Ho bisogno di eseguire una differenza con un valore elevato a potenza all'interno di un ciclo for

esempio:

for(int i=0;i<8;i++){
   if(condizione){
      value-=(pow(2,i)+1);
   }
}

il problema è che quando la condizione è verificata, viene eseguita l'operazione 2 volte, prendendo in considerazione 2 volte lo stesso i prima di passare al successivo.
la stessa cosa mi succede se invece del pow uso uno shift, e chiaramente non si verifica se invece del pow eseguo una differenza con un valore arbitrario.

consigli su come risolvere?

nel tuo caso è meglio usare gli shift,se stai usando integer..
cmq,puoi copiare tutto il codice?

Scusa se non ti ho risposto prima, ma cmq grazie del consiglio, riguardando il codice poi mi sono accorto di un piccolo errore, ho risolto.

Grazie.