Правила приоритета операторов говорят, что реляционные операторы, такие как <
, имеют приоритет над &&
.Следовательно, подвыражение wordlength > 6.0 && wordlength< 9.0
эквивалентно (wordlength > 6.0) && (wordlength< 9.0)
.
После того, как это отсортировано, обратите внимание, что &&
имеет слева направо ассоциативность .Это означает, что если в одном и том же выражении присутствуют несколько одинаковых операторов с одинаковым приоритетом, например, a && b && c
, то это эквивалентно (a && b) && c
.
Логические операторы, такие как &&
, имеютпорядок «короткого замыкания» оценки.Это означает, что в 0 && b
только операнд 0
оценивается / выполняется.См. Требуются ли логические операторы короткого замыкания?И порядок вычисления?
И, наконец, логические выражения в C не дают логического типа (как в C ++), а int
значения 1
или 0
.Несмотря на то, что типом является int
, его можно рассматривать так, как будто он имеет тип bool
, и вы можете смело писать код, такой как bool b = x && y;
.