为什么i++和++i在下面的代码一样吗?
#include <stdio.h>
int main()
{
int i=5;
while(1)
{
i++; /*replacing i++ by ++i also gives 6*/
printf("%d",i);
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是6.我了解到,增量操作者i++具有其值i的当前值,并导致所存储的值i被incremented.But i's值显示为6虽然i的当前值是5的更换i++通过++i也给出了相同的值6.为什么是i++与++i在这种情况下相同的,为什么输出是6虽然初始值是5.
Nli*_*tis 10
执行顺序是顺序的.
i++或者就此而言,++i是在该序列点执行的单个指令,其i值不在该指令的任何地方使用,因此它并不重要.
如果更换printf("%d",i);用printf("%d",i++);或printf("%d",++i);事物就会大大不同.
编辑:我也发现了一些非常有用的东西.在C和中C++,前缀一元运算符返回一个lvalue,与后缀一元运算符相反,所以如果你想,例如,减少i两次,那么
(i--)--; // is illegal
Run Code Online (Sandbox Code Playgroud)
而
(--i)--; // is perfectly legal and works as intended.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |