赞
踩
创作内容不易,学习的朋友麻烦关注下博主,后面学习不迷路。有不会的问题也可以论坛咨询博主,博主也会及时回复~~
递增运算符(++)主要用于将操作数在本身的基础上面加1,而递减运算符(--),则 主要用于将操作数在本身的基础上面加减去1
比如
在这个例子当中,a的初始值为2,a++后变为3(a = a + 1),a--后变为(a = a - 1)2;
1.变式
递增(递减)都有前缀递增(递减)和后缀递增(递减),它们在表达式上面的区别是,前缀的操作符号在操作数前面,后缀的操作符号在操作数后面
它们两者在单独大多数情况可以不区分使用,因为最终效果是一致的
两者的情况是一样的,但看似简单的两者却有着比较复杂的什么时候改变值得问题,我们来看一个例子
nextnum = (y + n++) * 6;
这里最容易产生误会的点就在n++自增上,首先我们都知道副作用只能在序列点或完整表达式后尝试,而我们注意看(y + n++)属于 (y + n++) * 6的子表达式所以不是完整表达式,这就意味着n的自增只会发生在;后,而结果的确也是这样。
一般遇到这种容易尝试误解的表达式,最好的方式就是拆开。
nextnum = (y + n++) * 6;
等于
nextnum = (y + n) * 6;
n++;
在看这个例子
在这里例子当中,
(1 + n++) + n;其实等于1+3+3为7。n得自增只有等到(1 + n++) + n完整表达式结束才能完成
用户定义前缀函数,将值加1,然后返回结果。但是后缀版本首先复制一个副本,然后将其加1,然后将复制的副本返回。因此,前缀版本的效率比后缀要高
2.优先级问题
前缀递增,前缀递减和解除应用运算符优先级相同,结合律从右到左
double x = *++pt;
意思是pt地址先加1,在解引用
double x = ++*pt
意思是pt先解引用获得地址值,然后在该值基础上面加1
后缀递增和后缀递增得优先级相同,但比前缀运算符得优先级高,结合律从做到右
double = *pt++
意思是pt地址先加1,在解引用
这里看搁有趣的例子,这里我把char变量自加加。++ch是对应的字符串值加1,然后进行对应的字符打印。但ch + 1在计算时候,ch会被强制转换为int类型,所以最终是以int类型进行打印的
我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。