1)
int i;
for(i=1;i<5,i<8;i++){
}
printf("%d",i);
2)。
int i;
for(i=1;i<18,i<6;i++){
}
printf("%d",i);
输出为1.)为8而对于2.)为6
我没有了解代码的工作原理,我们将非常感谢帮助。
答案 0 :(得分:5)
,
运算符求值为其最后一个操作数。
i < 18, i < 6
为i
时 6
变为虚假。
答案 1 :(得分:5)
逗号运算符(,)用于分隔两个或多个表达式,这些表达式只包含一个表达式。 当必须为某个值计算表达式集时,只考虑最右边的表达式。
因此:
for(i=1;i<5,i<8;i++)
相当于:
for(i=1;i<8;i++)
评估i
到8
和
for(i=1;i<18,i<6;i++)
相当于:
for(i=1;i<6;i++)
评估i
到6
Standerdese参考:
C ++ 11标准§5.18:
逗号运算符从左到右分组。
表达式:
赋值表达式
表达式,赋值表达式用逗号分隔的一对表达式从左到右进行评估;左表达式是丢弃值表达式(第5条)83 。在与右表达式相关联的每个值计算和副作用之前,对与左表达式相关联的每个值计算和副作用进行排序。 结果的类型和值是右操作数的类型和值;结果与右操作数具有相同的值类别,如果右操作数是glvalue和位域,则为位字段。