2017-02-12 22 views
-1

Каков вывод этого кода на C?Побитовые операторы с декрементом прироста

#include <stdio.h> 

    void main() 

    { 

     int a = 5, b = -7, c = 0, d; 

     d = ++a && ++b || ++c; 

     printf("\n%d%d%d%d", a, b, c, d); 

    } 

answere 6 -6 0 1. Я не понимаю, как в качестве приоритета логического элемента И это больше, чем OR.

+1

Там нет битовых операторов здесь. – harold

ответ

2

Что происходит, так это то, что a имеет значение 1, а также b, используя ++a, ++b. Итог ++a && ++b правдивый (что соответствует 1), и это именно то, что получает d.

Потому что он читает true || ++c не проверяет правильный от входа, так как результат явно true, поэтому гр equlas 0.