Следующий код:Операции C Программирование И значение
int z=10,y=5;
z=z&&!y;
printf("%d\n",z);
выходы 0. Может кто-нибудь объяснить, как результат 0?
Следующий код:Операции C Программирование И значение
int z=10,y=5;
z=z&&!y;
printf("%d\n",z);
выходы 0. Может кто-нибудь объяснить, как результат 0?
Логический оператор NOT дает 0, если операнд отличен от нуля и 1, если операнд 0
. С y
составляет 5, !y
- 0
. Логический оператор дает 0 или 1.
Таким образом, все выражение z && !y;
становится 0
(который присваивается z
и 0
печатается).
&&
является булевой операцией. В этом контексте 0
означает, что ложные и ненулевые значения означают true. Из-за этого z&&!y
оценивает 0
, и поэтому 0 присваивается z
.
Это просто г = 10 AND NOT (5)
10 больше, чем 0, так что имеет значение верно. Не 5 будет 0, тогда 1 И 0 будет 0!
Какой еще результат вы ожидаете? и почему? –
Просто комментарий, что часто лучше использовать() скобки и интервалы в математических выражениях, это значительно упростит чтение. Таким образом, приоритет операторов также ясен. Пример: если вы пишете z = z & & (!y);, цель выражения становится намного понятнее – mdewit