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
在语句的三个术语中的每一个中都有三个逗号运算符。警告是针对第 2 学期的。
术语 1 和 3 的两个表达式都按预期执行。
术语 2 的左操作仅被评估为 void,不参与for
条件,因此会导致您的警告。
带有逗号运算符的条件表达式的条件语句(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 语句中最后一个具有真值的表达式。
int i = 1;
int j = 0;
int k = 1;
if(i, j, k) {
printf("Inside");
}else {
printf("Outside");
}
对上面的更正:此代码将打印“Inside”,因为逗号运算符是从左到右计算的,并且 k 是 if 语句中计算的最后一个表达式,它返回 true,因为 k = 1。