for (count = index, packet_no = 0;
count < TOTAL_OBJ, packet_no < TOTAL_PKT;
count++, packet_no++)
=>
コンマ式の左側のオペランドは効果がありません。
上記のコードは正しく、このエラーが発生する理由を理解できませんでした。
for (count = index, packet_no = 0;
count < TOTAL_OBJ, packet_no < TOTAL_PKT;
count++, packet_no++)
=>
コンマ式の左側のオペランドは効果がありません。
上記のコードは正しく、このエラーが発生する理由を理解できませんでした。
これがカンマ演算子の仕組みです。やりたいことは、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
for
ステートメントの 3 つの用語のそれぞれに 3 つのコンマ演算子があります。警告はターム 2 に対するものです。
項 1 と 3 の両方の式が期待どおりに実行されます。
項 2 の左側の操作は無効としてのみ評価され、条件に参加しないためfor
、警告が表示されます。
コンマ演算子を使用した条件式を持つ条件文 (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 ステートメント内で評価される最後の式です。