',' оператор в вашем контексте оценивает первое условие, отбрасывает результат и затем оценивает второе условие.
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/