谁知道C语言中的++i和i++分别表示什么意思哈,以及在应用中如何区分它们的差别,要解释详细一点哦!

来源:百度知道 编辑:UC知道 时间:2024/05/12 01:25:54

a=i++;表示a=i,i=i+i;
a=++i;表示a=i+1,i=i+1;

就是说,i++,先用i的值,i再自加1
++i,先i自加1,再用i的值

这么说楼主就很容易懂了,++i是先加后用,i++是先用后加。
举个例子:
#include<stdio.h>
void main()
{
int i=1;
printf("%d",i++);//先用后加,那么这行输出1,下行的i就等于2了;如果换成++i那么这行输出就已经是2了,自己可以在C编译器里实践看看。
printf("%d",i);
}
其实编程这种东西就是要自己多练多实践,根据符号的前后顺序也可以猜出来大概的用法,记住熟能生巧的!

i++的工作过程是这样的:用一个临时变量temp存放i的值,然后i增一,返回temp ,即先使用,后加一
++i的工作过程是这样的:i增一,返回i的引用 ,即先加一,后使用
因此++i没有创建其他对象,从理论上讲,++i的速度要比i++要快

编了一个测试用例,看看就明白了
#include "stdio.h"

void main()
{
int i=0;
int j=0;
printf("%d",i++);
printf("%d",++j);

}

int a,i=10;
简单点说吧
a=++i;
完全等价于
i=i+1;
a=i;

a=i++;
完全等价于
a=i;
i=i+1;

++i和i++简单的说要在程序的上下文中来区别了。
深入的区别是它们的差异与编译器的中间代码有关了。例如++i表示取i的地址,增加它的内容,再把内容放入寄存器中;i++表示取i的地址,把它的内容放入寄存器中