社区
C语言
帖子详情
C语言中i++与++i的区别
~兰心蕙质~
2019-06-12 12:28:44
i++是先赋值,再给i加1 ++i是先给i+1,再赋值 比如: i=1; x=i++; 表示x=1, i=2 i=1; x=++i; 表示x=2,i=2
...全文
197
3
打赏
收藏
C语言中i++与++i的区别
i++是先赋值,再给i加1 ++i是先给i+1,再赋值 比如: i=1; x=i++; 表示x=1, i=2 i=1; x=++i; 表示x=2,i=2
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lin5161678
2019-06-12
打赏
举报
回复
值计算结果不同 副作用相同
qybao
2019-06-12
打赏
举报
回复
原则上,x=表达式,是把表达式的计算结果赋给x
i++表达式,表达式是取i的当前值作为计算结果,然后再i自增1
++i表达式则是先i自增1,然后再取i的最新值作为表达式的计算结果
csucxy
2019-06-12
打赏
举报
回复
1、前置与后置++的操作数都必须是一个左值(关于左值、右值,请查看C/C++标准相关内容)。这里之所以提“左值”,不提“变量”,请看如下示例:
有
int i = 0;
则
++i、i++明显合法,因为i是变量,但表达式++(++i)或(++i)++也均合法,但++(i++)、(i++)++非法。因为表达式++i是一个左值,而i++是一个右值。当然变量是一个左值。
2、前置与后置++运算均会让其操作数自加1,其区别在于前置、后置++运算符与操作数所构造的表达式的值不同。如:
有
int i = 0;
则
表达式++i的值为1,而表达i++的值为0。即所谓,表达式++i的值为i自加之后i的值,而i++的值则为i自加之前的i的值。但不管是前置还是后置,i均会自加1。
所以int型变量初值i等于0时,如果分别有
int j=++i;
和
int j=i++;
则变量j的值分别为1和0。
3、尽管++运算符的操作一般为整数型数据类型,但并不是不可以是非整数型。如
float f = 0.3;
float ff = ++f;
也合法,以上语句执行后,ff的值为1.3,但这明显不是一种值得推荐的计算。
4、在计算过程中,表达式++i与变量i对应同一段内存空间,而表达式i++与变量i分别有自己的内存空间。另外,前置++运算效率要高于后置++,其中一个很重要原因是前置++计算既节约了内存空间,也减少的内存空间分配与回收的过程,当然,一般情况下,这种内存空间与CPU运算时间的节约可以忽略。
表达式++i与变量i对应同一段内存空间,也是表达式++i是一个左值表达式的原因。
5、不要试图对右值(如常量)表达式进行++运算。也不要做如下运算:
unsigned int i = 0, j;
j = --i;
以上语句,在编译、运行时均不会报错,但语句执行后,变量i、j值明显不会是-1。
C语言
中
i
++
和
++
i的
区别
C语言
中
i
++
和
++
i的
区别
(1)前缀
++
(
++
i): 变量类型可以是基本类型也可以是指=指针类型。
++
i使变量i的值增加"1",并以i的新值作为表达式"
++
i"运算的结果,该表达式返回的就是变量i增加1以后的值
++
i等价于i=i+1 (2)...
C语言
中
i
++
与
++
i 的
区别
a = i
++
,相当于 a = i;不同之处在于 i
++
是先赋值后加1 ,
++
i是先加1 后赋值。例如:a =
++
i,相当于 i=i+1;i
++
与
++
i 都是表达式,作用都是 i = i+1。一些情况下 i
++
的性能不如
++
i。
C语言
中
++
i和i
++
的详细
区别
1.
++
i
++
i和等同于 ... 不同点:在i
++
中
多了一个与i类型相同的临时变量,i
++
是右值,
++
i是左值。 例子1: 1 int a = 1, b = 2; 2 int *pt; 3 pt = &a; 4 5 pt
++
= &b; //
c语言
中
i
++
与
++
i的使用技巧
首先我们要先知道
++
i与i
++
的基本用法及其基本
区别
++
i 先自加,在使用 i
++
先使用,再自加 粗略地看,
++
i和i
++
的作用都相当于i = i+ 1,但
++
i和i
++
的
区别
在于
++
i是先执行i = i + 1后,再使用i的值, 而i
++
是先...
有关
C语言
中
i
++
的用法和理解
i
++
是先使用i,再自增; i–是先使用i,再自减;
++
i是先自增,再使用; –i是先自减,再使用. 下面展示一些 内联代码片。 int removeDuplicates(int* nums, int numsSize) { int i = 1, j = 1; if (numsSize <= 1) ...
C语言
70,037
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章