¿Qué hace esto? [duplicar]

Posible duplicado:
El operador ternario (condicional) en C

Este es un ejemplo de código de la ayuda de mi maestro. No tengo ni idea de quetotal = total*2+ (n=='1'? 1:0); hace. Creo que se multiplica el total por 2, pero ¿qué pasa con el signo de interrogación y el1:0 relación?

int bcvt(FILE *infile){
  char n;
  int i, total=0;
  for(i=0; i<32; i++){    
    fscanf(infile, "%c", &n);
    total = total*2+ (n=='1'? 1:0);
  }
  char dummy;
  fscanf(infile, "%c", &dummy);
  return total;
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta