C语言++运算符前缀与后缀的区别-创新互联

++a

黄骅网站建设公司创新互联公司,黄骅网站设计制作,有大型网站制作公司丰富经验。已为黄骅近1000家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的黄骅做网站的公司定做!

a++

首要的区别呢,就是一个是前缀加,一个是后缀加。这个时候就会有人说了。你这不废话嘛......

额......

其实这个运算符无论位置在前还是在后,最终的结果都是使得变量a地址存放的值+1。

那么不一样的地方就是其中的过程了:

a++:先进行表达式运算,然后再进行自身值+1

++a:先进行自身值+1,再进行表达式运算

上述仅仅是提到a++和++a作为右值时的表达式

那么其实a++和++a在作为左值的时候又会有所不同

因为由上述现象我们可以知道a++是先进行表达式运算然后再去将自身值+1,那么这个参与表达式运算的是a本身吗?其实不是的,此时参与表达式运算的只是一个临时变量,它是临时存在的,是一份变量a自身的临时副本仅仅用于参与运算。由于它是临时存在的,并不是你程序中已定义的可寻址变量,你无法将右值赋值给它。

由于后面涉及到引用,C编译可能会误判,所以切换到C++

结果显然它不是一个可修改的左值

而++a则没有这个顾虑,因为它是先自增,然后是自身的引用参与表达式运算,引用其实就是变量a的另一个叫法,与变量a是共用同一块内存地址的,所以可以将右值赋值给它。

总的来说,a++是不可以作为左值使用的,但是++a可以

a++是a的临时变量参与的表达式运算,++a是a的引用参与的表达式运算

a++参与表达式运算的值是自增之前的值,++a参与表达式运算的值是自增之后的值

另外它的结合性为右结合,也就是说++a++——>++(a++)

a++b ——>a++ b 缺乏将a++和++b运算的运算符

a++++b——>a++ ++b 也会出错,因为缺乏将a++和++b运算的运算符

a+++++b——>a++ ++ +b,这里会出错,因为a++不能作为左值,所以不能作为操作符++的对象

如有不对的地方,欢迎大家指正!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:C语言++运算符前缀与后缀的区别-创新互联
标题路径:http://pwwzsj.com/article/dsehjj.html