2016-10-27 6 views
-1
vector<int> G[MAXN] ; 

char isLeaf[MAXN] ; 

int n,path; 

for(int i = 0;i < n;i++) path -= isLeaf[i] = G[i].size() == 1 ; 

// Forループのコードはどのように機能しますか?私はここで複数のオペレータが混乱しています。複数の演算子を1行に入力

+0

@BenVoigt ' G'は 'ベクトル 'の配列です。 –

+0

@GillBates:ちょうど気づいた、私は間違った書式に気を取られた。 –

+2

*演算子の優先順位*を読んで検討してください。また、代入演算子は値を返します。演算子 '=='は、整数定数(偽の場合は0、真の場合は非ゼロ)に変換できる 'true'または' false'値を返します。悪いコード。コピーしないで。ごみ箱に入れて書き直してください。 –

答えて

2

によりoperator precedence and associativityに、声明

path -= isLeaf[i] = G[i].size() == 1 ; 

は同等です:あなたはわかりやすくするために複数の文に分割した場合、あなたが得る

path -= (isLeaf[i] = (G[i].size() == 1)); 

bool temp = (G[i].size() == 1); 
isLeaf[i] = temp; 
path -= isLeaf[i]; 
+1

ありがとう、それは働いていました:) –