关于++,--单目运算符
2016-11-15 10:14阅读:
关于++,--这两个单目运算符对于很多应届生笔试的时候都会碰到,而且也是一个容易弄混淆的地方,我们从C++程序设计(清华李春葆版本的),来做出相关阐述.
一:基本理论
自增(++),自减(--)运算符为变量的增1和减1提供了紧凑格式,例如:
a++ // 等价于 a = a+1;
a-- // 等价于 a =
a-1;
需要说明的是,自增,自减符号既可以位于变量的前面,也可以位于变量的后面,在单独作为一个表达式时,++a和a++效果一样,都是将变量a自增1,若作为一个复杂表达式的一部分,例如(a++)+b和(++a)+b,那么这两个表达式的效果是不一样的,前缀++表示先将其后面的变量值增1,然后将增1后的变量参与表达式运算,而后缀++表示将其前面的变量先参与表达式运算,然后变量自身增1,例如a=1,b=2,则(a++)+b结果为3,而(++a)+b的结果为4
从这里我们可以知道以下几点:
1:单目运算符
2:前缀后缀均可以,在前缀和后缀的使用上唯一需要区别的是表达式是单个表达式还是复杂表达
式
3:运算符为右结合方式,优先与右边的标识符结合
在这里我的认识是:
++i和i++
首先编译器在源代码编译的时候首先读代码
部分,若编译器读到先读到++这个运算符,由于其右结合特性,首先就是去找右边的标识符号,然后执行自增操作,此时将运算后的变量存入原变量区,而i++首先读入的是标识符,这是标识符的值会被读入到缓存区,执行自增操作后赋给i,虽然此时的i已经自增,但由于在这个表达式期间i已被读入到缓存区,所以在这个表达式执行期间,i是一种读保护状态(禁止读入),因而在整个表达式执行期间,这个值是不会发生变化的。表达式执行完后读保护状态解除。