计算机二级

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

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

来源:fjzsksw.com 2010-10-13 16:57:53

 

 

 

所以先把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仅计算了一次。一般的来说,这种区别对于程序的运行没有多大影响,但是当表达式作为函数的返回值时,函数就被调用了两次(以后再说明),而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。

  七、条件运算符

  条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。

  <表达式1>?<表达式2>:<表达式3>

  在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。

  例如:

  a=(b>0)?b:-b;

  当b>0时,a=b;当b不大于0时,a=-b;这就是条件表达式。其实上面的意思就是把b的绝对值赋值给a。

  八、逗号运算符

  在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

  假设b=2,c=7,d=5,

  a1=(++b,c--,d+3);

  a2=++b,c--,d+3;

  对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。

  还有其他的如位逻辑运算符,位移运算符等等,我们等到讲位运算时再说明。

 

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

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