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