在哪些情况下i ++和++我可以引用相同的值?

use*_*361 3 c increment

为什么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)