что означает этот код на C ?

#c

#c

Вопрос:

Я работал над связанными списками и нашел образец. В этом примере говорится

while (currNode amp;amp; index > currIndex)

итак, какое логическое значение currNode ?

Комментарии:

1. Это зависит от типа currNode . Какой тип он имеет, влияет на то, что означает преобразование, bool вызванное его использованием в логическом выражении И.

2. Типы. Нам нужны типы. Все в C связано с типами. Каковы типы currNode , index и currIndex .

Ответ №1:

Скорее всего, это означает currNode != NULL .

Во C всем not 0 (таким образом, включая все not NULL ) рассматривается true в логических контекстах.

Ответ №2:

currNode имеет значение true, если currNode не является указателем на NULL .

Ответ №3:

Этот код означает что-то вроде этого (в псевдо-C )

 while (/* if currNode is integer type */
       currNode != NULL amp;amp;
       /* if operator int() is defined */
       currNode.(operator int()) != 0 amp;amp; 
       /* if operator bool() is defined */
       currNode.(operator bool()) != false amp;amp; 
       /* or some other defined cast operators */
       index > currIndex)
  

Ответ №4:

Проверяется, что currNode не равен null

 while(currNode !=NULL amp;amp; index > currIndex)
  

Ответ №5:

сделайте что-нибудь, пока currNode равен != 0, а currNode меньше индекса

Комментарии:

1. ИТАК, если я напишу «while (x)» в каком-то коде, это означает «обрабатывайте код между скобками while до x = 0».