Что насчет двух условий в цикле while? - PullRequest
2 голосов
/ 16 марта 2019

Итак, я смотрел код C и увидел это условие в цикле while:

while(x&&D(x-1),(x/=2)%2&&(1))

Я искал, но нашел только одну с командами, а затем с условием, а не с двумя условиями.

1 Ответ

1 голос
/ 16 марта 2019

',' оператор в вашем контексте оценивает первое условие, отбрасывает результат и затем оценивает второе условие.

x && D (x-1) это условие оценивается, но результат не учитывается. Так как в (x / = 2)% 2 && (1) используется значение x, изменения, внесенные в 'x' в первом условии, используются во втором условии, но достоверность первого условия не учитывается для вашего цикла while.

(x / = 2)% 2 && (1), здесь (x / = 2) оценивается как x = x / 2. И оператор модуля (%) применяется к результату. скажем, ваше значение x после оценки первого условия равно 11, затем x / = 2 оценивает x как 5, а затем 5% 2 равно 1 (дает напоминание о 5/2).

&& - логический оператор AND. Если левая сторона && имеет значение true, тогда вычисляется правая сторона. В приведенном выше примере, поскольку левая сторона имеет значение true (приводит к 1), а правая сторона уже равна 1, ваш (x / = 2)% 2 && (1) оценивается как True.

Надеюсь, это ответит на ваши сомнения. Помните, что с помощью оператора запятой вычисляется условие левой стороны / выражение запятой, но его результат отбрасывается.

Вы можете найти небольшие идеи для оператора запятой в ссылке ниже. https://www.geeksforgeeks.org/comna-in-c-and-c/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...