代码:
for(int i=0;i<5;){
i=i++;
printf("%d",i);
}
上面的程序无限打印零,这怎么可能?有说法i=i++;
。请解释为什么i
不增加的值。
代码:
for(int i=0;i<5;){
i=i++;
printf("%d",i);
}
上面的程序无限打印零,这怎么可能?有说法i=i++;
。请解释为什么i
不增加的值。
该语句i = i++
在 C 中是未定义的行为。简单地说,不保证在没有插入序列点的情况下修改和使用同一个对象以您期望的任何方式工作。
如果您对深入调查感兴趣,ISO C 标准的附录 C 中介绍了序列点。基本上,它们包括:
&&
;逻辑或||
;逗号,
。?:
运算符的第一个操作数的计算与第二个和第三个操作数的计算之间。if
或switch
)的控制表达式;while
ordo
语句的控制表达式;语句的每个(可选)表达式for
;语句中的(可选)表达式return
。