2017-08-25 2 views
-4

私は以下のコードをleetcodeの解法で見ました。リンクされたリスト内の要素の数を数えます。 whileステートメントには割り当て操作があります。誰でもこの仕組みを説明できますか?代入演算を伴う奇妙なwhileループC++

/** 
* Definition for singly-linked list. 
* struct ListNode { 
*  int val; 
*  ListNode *next; 
*  ListNode(int x) : val(x), next(NULL) {} 
* }; 
*/ 

struct ListNode * temp = head; 
int num = 1; 
while(temp = temp->next){ 
    num++; 
} 
+11

C++の割り当ては、割り当てられた値に評価される式です。 –

+0

@ juanpa.arrivillagaまあまあです。 – Yunnosch

答えて

2
  1. temp->nextの値をtemp
  2. while(temp)に割り当てられているが(temp != NULLように)評価され、ループ本体は

注意を実行する場合に

  • headがNULLである場合、あなたプログラムでランタイムエラーが発生する

  • +1

    割り当てが割り当てられた値(新しいtempまたは 'temp-> next')として割り当てが評価されるので、あなたは' while(temp) 'を見ていると説明する1.5を加える価値がありますそれを見て)。 – scohe001

    +1

    'head'がNULLの場合、動作は未定義です。ランタイムエラーが発生する場合と実行されない場合があります。 – Peter

    +0

    @Peter、良い点、悪い –

    関連する問題