for (count = index, packet_no = 0;
count < TOTAL_OBJ, packet_no < TOTAL_PKT;
count++, packet_no++)
=>
逗号表达式的左侧操作数无效。
我发现上面的代码是正确的,无法理解为什么会出现这个错误。
答案 0 :(得分:12)
这是逗号运算符的工作方式,您要做的是使用 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
答案 1 :(得分:2)
for
语句的三个术语中每个都有三个逗号运算符。警告是针对第2学期的。
术语1和3的两个表达式都按预期执行。
术语2的左侧操作仅作为空白进行评估,不参与for
条件,因此会导致您的警告。
答案 2 :(得分:1)
条件语句(for,while或if)具有带逗号运算符的条件表达式,最后一个表达式的值是条件语句的条件值(True或False)。 对于前。
int i = 1;
int j = 0;
int k = 1;
if(i, j, k) {
printf("Inside");
}else {
printf("Outside");
}
打印“Outside”,因为从左到右计算逗号运算符,k是if语句中返回false的最后一个表达式。
int i, j;
if(i = 0 , j = 1) {
printf("Inside");
}else {
printf("Outside");
}
以上打印“内部”。 j = 1是if语句中具有真值的最后一个表达式。
答案 3 :(得分:1)
int i = 1;
int j = 0;
int k = 1;
if(i, j, k) {
printf("Inside");
}else {
printf("Outside");
}
与上述内容更正:该代码将打印“ Inside”,因为逗号运算符从左到右进行求值,而k是if语句中求值的最后一个表达式,由于k = 1,因此返回true。