c语言中的++ i和i++有什么区别呢?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-31

在C语言中,`++i` 和 `i++` 都是自增操作,但它们在执行时有一些微妙的区别。

1. `++i`:这被称为前缀递增操作符,它表示先将变量增加1,然后再使用变量的值。也就是说,变量会在表达式中被使用前就已经加了1。

2. `i++`:这被称为后缀递增操作符,它表示先使用变量的值,然后再将变量增加1。也就是说,变量会在表达式中被使用后再加1。

这两者的差异在于表达式的值是什么。对于 `++i`,表达式的值是增加后的值,而对于 `i++`,表达式的值是使用之前的值。

下面是一个示例来说明这两者之间的差异:

```c

int i = 5;

int a = ++i;  // a = 6, i = 6

int j = 5;

int b = j++;  // b = 5, j = 6

```

总之,两者的最终结果都是将变量增加了1,但是在它们的使用时机和表达式值上有所不同。



1、首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值
2、++i和i++都是分两步完成的。因为++i
是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i
=
a
=b,即
++i
是一个左值(可被寻址的值);i++
的后面一步是自增,不是左值。(2的两步分解与左右值的因果关系只是我的直觉,对错还待考证)
3、++i
和i++
的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。但是要注意其生存周期,就好像指针delete以后一定要赋予0一样,我们要注意i值在程序流中的变化。
扩展资料:
关于对循环i++的困惑:
for(int
i=0;i<10;i++){
System.out.println(i);
}
过去我们都知道i++和++i的字面区别是在自增,i++是运行的时候为原来的数,运行完后自增。所以一直对这里的i++以为也是同样的操作。
进行步骤如下,i=0,满足i<10,则进行i++操作。由于i++是当前运行的时候不自增,所以是i为0,然后执行输入语句,输出0.
接着返回自增条件i变成1.以此进行循环。所以最终调试出来的结果是0,1,2,3,4,5,6,7,8,9.i=10的时候不满足i<10这个条件,跳出循环体。
所以执行步骤是:
1、i=0
2、i<10
3、i++
4、输出。
参考资料:搜狗百科——C语言