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

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

我发现上面的代码是正确的,不明白为什么会出现这个错误。

4

4 回答 4

14

这就是逗号运算符的工作方式,您要做的是使用ORAND(在您的情况下可能是 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在语句的三个术语中的每一个中都有三个逗号运算符。警告是针对第 2 学期的。

术语 1 和 3 的两个表达式都按预期执行。

术语 2 的左操作仅被评估为 void,不参与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");
}

打印“Outside”,因为逗号运算符是从左到右计算的,并且 k 是 if 语句中计算的最后一个返回 false 的表达式。

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

上面印有“里面”。j = 1 是 if 语句中最后一个具有真值的表达式。

于 2012-11-28T09:30:57.763 回答
1
int i = 1;
int j = 0;
int k = 1;
if(i, j, k) {
   printf("Inside");
}else {
   printf("Outside");
}

对上面的更正:此代码将打印“Inside”,因为逗号运算符是从左到右计算的,并且 k 是 if 语句中计算的最后一个表达式,它返回 true,因为 k = 1。

于 2019-12-11T17:38:05.143 回答