работа операторов в цикле while (c программированием) - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок в программировании. Надеюсь, вы, ребята, можете мне помочь.

i=0;
while(i++<12)
printf("%d\n",i);

Мой вопрос не касается операторов или того, как работает код. Я проверил различные формы, так что я знаю, что делает этот кусок кода, и окончательное значение в нем будет 13. Что я хочу знать, это:

С моей точки зрения, операторы должны следовать за приоритетом оператора (предпочтение). Поэтому ++ должен быть оценен до <. Приоритетная ссылка оператора: <a href="https://www.geeksforgeeks.org/c-operator-precedence-associativity/" rel="nofollow noreferrer">https://www.geeksforgeeks.org/c-operator-precedence-associativity/

пока что я = 3,

Step 1:while(i++<12)
Step 2:while((i+1)<12)
Step 3:while(4<12)
Step 4:true and enters while loop

Если предпочтением оператора пренебрегают (но я не знаю почему):

Step 1:while(i++<12)
Step 2:while(i<12)
Step 3:while(3<12) which returns value 1
Step 4:while(1++) operator ++ on the return value 1 from above step
Step 5:while(2) which is true and enters while loop

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

1 Ответ

0 голосов
/ 07 ноября 2018

Пример:

i = 0;
while(i<12)       //compare i with 12
    printf("%d\n",i);

i = 0; 
while(i++<12)        //compare i with 12 and THEN i=i+1
    printf("%d\n",i);

i = 0;
while(++i<12)        //first i=i+1 and then compare i with 12
    printf("%d\n",i);
...