Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Что значит ? 1: 0 означает

Автор вопроса: ponderingdevОтветов: 2

Я не понимаю, чего пытается достичь третья линия. Я совсем недавно выучил побитовые операторы. Было бы здорово, если бы кто-нибудь мог провести меня через последние две строчки. Я понимаю оператор сдвига, но я не совсем понимаю, что он означает.

    void create(uint8_t bInt[], int64_t num){
      for (int pos = 0; pos < 32; pos++){
        bInt[pos] = (num & mask) ? 1 : 0;
        mask = mask << 1;
         }
       }

Для этого назначения мы используем 32-элементный массив значений uint8_t для представления 32-битных целых чисел. Например, целое число 84193 в двоичном формате равно 0 .... 0001 0100 1000 1110 0001. В bInt [] оно будет сохранено как 1000 0111 0001 0010 1000 0000 .... 0. Спасибо за уделенное время

  • Это называется условным оператором: en.wikipedia.org/wiki/%3F: P.P 24.03.2015
  • Тернарный оператор: if (это условие) return 1 else return 0; Jared Burrows 24.03.2015
  • Вы можете заменить (num & mask) ? 1 : 0 на (num & mask) != 0 или !!(num & mask) chqrlie 24.03.2015

cbitwise-operators

Ответы

Ответ 1 · рейтинг 6 · Ryan

?: - это тернарный оператор. (num & mask) ? 1 : 0;

Подумайте об этом так:

if( (num & mask) ) {
    bInt[pos] = 1
} else {
    bInt[pos] = 0
}

Ответ 2 · рейтинг 1 · Razib

Это тернарный оператор, который также используется в некоторых других языках, таких как - java, c ++. Это замена краткой формы if-then-else. Это работает, как показано ниже -

expression ? if_true_then_process_it : or_process_it

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы