逗号表达式的左侧操作数无效

时间:2012-11-27 08:09:54

标签: c

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

=>逗号表达式的左侧操作数无效。

我发现上面的代码是正确的,无法理解为什么会出现这个错误。

4 个答案:

答案 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。