计算机二级

3773考试网计算机等级考试计算机二级正文

计算机等级考试二级C语言:运算符

来源:fjzsksw.com 2010-11-10 8:28:50

 

 

 五、自增自减运算符

  这是一类特殊的运算符,自增运算符++和自减运算符--对变量的操作结果是增加1和减少1。例如:

  --Couter;

  Couter--;

  ++Amount;

  Amount++;

  看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太清楚,看下面的例子:

  num1=4;

  num2=8;

  a=++num1;

  b=num2++;

  a=++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为9。

  那么如果出现这样的情况我们怎么处理呢?

  c=num1+++num2;

  到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。

  六、复合赋值运算符

  在赋值运算符当中,还有一类C/C++独有的复合赋值运算符。它们实际上是一种缩写形式,使得对变量的改变更为简洁。

  Total=Total+3;

  乍一看这行代码,似乎有问题,这是不可能成立的。其实还是老样子,'='是赋值不是等于。它的意思是本身的值加3,然后在赋值给本身。为了简化,上面的代码也可以写成:

  Total+=3;

  复合赋值运算符有下列这些:

  符号 功能

  += 加法赋值

  -= 减法赋值

  *= 乘法赋值

  /= 除法赋值

  %= 模运算赋值

  <<= 左移赋值

  >>= 右移赋值

  &= 位逻辑与赋值

  |= 位逻辑或赋值

  ^= 位逻辑异或赋值

  上面的十个复合赋值运算符中,后面五个我们到以后位运算时再说明。

  那么看了上面的复合赋值运算符,有人就会问,到底Total=Total+3;与Total+=3;有没有区别?答案是有的,对于A=A+1,表达式A被计算了两次,对于复合运算符A+=1,表达式A仅计算了一次。一般的来说,这种区别对于程序的运行没有多大影响,但是当表达式作为函数的返回值时,函数就被调用了两次(以后再说明),而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。

 

上一页  [1] [2] [3] [4] 下一页

触屏版 电脑版
3773考试网 琼ICP备12003406号-1