2016-10-11 1 views
-5

Следующий код:Операции C Программирование И значение

int z=10,y=5; 
z=z&&!y; 
printf("%d\n",z); 

выходы 0. Может кто-нибудь объяснить, как результат 0?

+7

Какой еще результат вы ожидаете? и почему? –

+0

Просто комментарий, что часто лучше использовать() скобки и интервалы в математических выражениях, это значительно упростит чтение. Таким образом, приоритет операторов также ясен. Пример: если вы пишете z = z & & (!y);, цель выражения становится намного понятнее – mdewit

ответ

3

Логический оператор NOT дает 0, если операнд отличен от нуля и 1, если операнд 0. С y составляет 5, !y - 0. Логический оператор дает 0 или 1.

Таким образом, все выражение z && !y; становится 0 (который присваивается z и 0 печатается).

2

&& является булевой операцией. В этом контексте 0 означает, что ложные и ненулевые значения означают true. Из-за этого z&&!y оценивает 0, и поэтому 0 присваивается z.

2

Это просто г = 10 AND NOT (5)

10 больше, чем 0, так что имеет значение верно. Не 5 будет 0, тогда 1 И 0 будет 0!

Смежные вопросы