Co to robi? [duplikować]

Możliwy duplikat:
Operator trójskładnikowy (warunkowy) w C

To przykład kodu z mojej pomocy nauczyciela. Nie mam pojęcia cototal = total*2+ (n=='1'? 1:0); robi. Myślę, że to pomnoży sumę przez 2, ale to, co jest ze znakiem zapytania i1:0 stosunek?

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;
}

questionAnswers(4)

yourAnswerToTheQuestion