3.2 算术操作符

from http://www.learncpp.com/cpp-tutorial/32-arithmetic-operators/

一元算术操作符

有两种一元算术操作符,+和-。一元操作符只进行一次操作

OperatorSymbolFormOperation
Unary plus++xValue of x
Unary minus--xNegation of x

为了获得最好的效果,这些操作符最好与操作对象紧挨在一起(如,-x,不是- x)。

不要将一元减操作符和二元减操作符相混淆。如x = 5 - -3;。

二元操作符

这里有5中二元算术操作符

OperatorSymbolFormOperation
Addition+x + yx plus y
Subtraction-x - yx minus y
Multiplication*x * yx multiplied by y
Division/x / yx divided by y
Modulus%x % yThe remainder of x divided by y


整型和浮点型除法

很容易认识到除法有两种不同的模式。如果操作数都是整型,除法操作得到的是整型的结果。整型相除,将小数部分都丢弃了。如,7/3=2。注意,整型相除并不会四舍五入,3/4=0而不是1.

如果其中一个或两个操作数都是浮点型,除法操作符执行浮点型相除的模式,返回一个浮点型值,小数部分被保留。如,7.0/3=2.333,7/3.0=2.333,7.0/3.0=2.333.

注意不要试图去除0或0.0,这样通常会使你的程序奔溃,因为这样的方式是没有被定义的!


取模

取模操作符只适用于整型的操作数,它返回的是两个整型值相除后的余数。如,7/3=2余1,所以7%3=1.

取模操作在检测一个数是否被另一个数整除的时候很有用,采用if x%y==0的判断方式。这在当我们需要每隔n个循环进行一次操作时变得很有用

举个例子,我们想要写一个每个20个数字一行输出1到100的数字的程序。我们可以采用取模的方式判断时候需要换行

   1: #include <iostream>
   2:  
   3: int main()
   4: {
   5:     using namespace std;
   6:  
   7:     // nCount holds the current number to print
   8:     int nCount = 1; // start at 1
   9:  
  10:     // Loop continually until we pass number 100
  11:     while (nCount <= 100)
  12:     {
  13:         cout << nCount << " "; // print the current number
  14:  
  15:         // if nCount is divisible by 20, print a new line
  16:         if (nCount % 20 == 0)
  17:             cout << endl;
  18:  
  19:         nCount = nCount + 1; // go to next number
  20:     } // end of while
  21: } // end of main()


注意当有负值参与到整型相除与取模的操作的情况

如果一个或两个操作数是负值,编译器自由的进行向上截断或是向下截断!大多数编译器是向零靠近进行截断。如,-5/2的值可以是-3或是-2,这取决于你的编译器。

如果取模操作符是负值,这个结果可能是负值也可能是正值!如-5%2可以是-1,也可能是1.

 

 

算术赋值操作符

OperatorSymbolFormOperation
Assignment=x = yAssign value y to x
Addition assignment+=x += yAdd y to x
Subtraction assignment-=x -= ySubtract y from x
Multiplication assignment*=x *= yMultiply x by y
Division assignment/=x /= yDivide x by y
Modulus assignment%=x %= yPut the remainder of x / y in x

转载于:https://www.cnblogs.com/grass-and-moon/archive/2012/05/11/2496703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值