Вопрос по c – Что это делает? [Дубликат]

3

Possible Duplicate:
The ternary (conditional) operator in C

Это пример кода из моей помощи учителя. Я понятия не имею, чтоtotal = total*2+ (n=='1'? 1:0); делает. Я думаю, что это умножить сумму на 2, но что с вопросительным знаком и1:0 соотношение?

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;
}
Я даже не знаю, с чего начать поиск или ключевое слово для поиска. Спасибо Sixlettervariables Learning C
нет проблем. Каждый новый человек в C / C ++ приходит в замешательство от того, как его назвать. user7116
@ CarlNorum, Дайте ему перерыв, Поиск троичного оператора затруднен, так как вам нужно знать, что сначала он называется троичным оператором ... У меня была точно такая же проблема много лет назад, в итоге я нашел его, выполнив поиск " оператор знака вопроса ". verdesmarald
Это моя точка зрения, - гуглил "вопросительный знак с", появляетсяэта ссылк как первый удар. Carl Norum
Откуда у людей возникает мысль, что они могут изучать C, даже не открывая вводную книгу по C? Jim Balter

Ваш Ответ

4   ответа
1

n=='1'

true или false, операция вернет левую часть (1: 0) для true и правую для false.

Значения могут быть чем угодно. 1 и 0 здесь случайны.

if (n == '1') {
   return 1;
}
else {
   return 0;
}
Нет, это не то же самое. Использование троичного оператора является частью выражения и дает значение. Анif заявление не делает. Carl Norum
Ты прав, дай мне отредактировать это. hermann
S / случайное / произвольное / Jim Balter
3

Заявлени

(n=='1'? 1:0)

эквивалентн

if ( n == '1' ) return 1
else return 0

Так что он возвращает 1, если n равно '1' и 0 в противном случае.

формат такой:

( expression ? if-true-return-this-value : else-return-this-value )
Стоит отметить, что троичная часть в C избыточна:n=='1' достаточно Matt Joiner
0

if ( n == '1') return 1; else return 0; Как уже говорилось, это троичный (условный) оператор в C.

И я предполагаю, что ваш код загружается, а затем преобразует двоичную строку "0001010" в целое число.

0

«если n равно 1, то используйте 1, иначе используйте 0». Таким образом, он добавит 1 или 0 к первому выражению на основе значения n.

Это еще один способ написать оператор if / else.

Похожие вопросы