4
for (count = index, packet_no = 0; 
     count < TOTAL_OBJ, packet_no < TOTAL_PKT; 
     count++, packet_no++)

=>コンマ式の左側のオペランドは効果がありません。

上記のコードは正しく、このエラーが発生する理由を理解できませんでした。

4

4 に答える 4

14

これがカンマ演算子の仕組みです。やりたいことは、ORまたはANDを使用することです(おそらくANDです):

// the condition for resuming the loop is that one of the conditions is true
count < TOTAL_OBJ || packet_no < TOTAL_PKT
// the condition for resuming the loop is that both conditions are true
count < TOTAL_OBJ && packet_no < TOTAL_PKT
于 2012-11-27T08:11:13.663 に答える
3

forステートメントの 3 つの用語のそれぞれに 3 つのコンマ演算子があります。警告はターム 2 に対するものです。

項 1 と 3 の両方の式が期待どおりに実行されます。

項 2 の左側の操作は無効としてのみ評価され、条件に参加しないためfor、警告が表示されます。

于 2012-11-27T08:32:39.890 に答える
2

コンマ演算子を使用した条件式を持つ条件文 (for、while、if) では、最後の式の値が条件文の条件値 (True または False) になります。たとえば。

int i = 1;
int j = 0;
int k = 1;
if(i, j, k) {
   printf("Inside");
}else {
   printf("Outside");
}

コンマ演算子は左から右に評価され、k は if ステートメントで評価され、false を返す最後の式であるため、"Outside" を出力します。

int i, j;
if(i = 0 , j = 1) {
   printf("Inside");
}else {
   printf("Outside");
}

上のプリントは「Inside」です。j = 1 は、真の値を持つ if ステートメント内で評価される最後の式です。

于 2012-11-28T09:30:57.763 に答える