3.2 算术操作符
from http://www.learncpp.com/cpp-tutorial/32-arithmetic-operators/
一元算术操作符
有两种一元算术操作符,+和-。一元操作符只进行一次操作
| Operator | Symbol | Form | Operation | 
|---|---|---|---|
| Unary plus | + | +x | Value of x | 
| Unary minus | - | -x | Negation of x | 
为了获得最好的效果,这些操作符最好与操作对象紧挨在一起(如,-x,不是- x)。
不要将一元减操作符和二元减操作符相混淆。如x = 5 - -3;。
二元操作符
这里有5中二元算术操作符
| Operator | Symbol | Form | Operation | 
|---|---|---|---|
| Addition | + | x + y | x plus y | 
| Subtraction | - | x - y | x minus y | 
| Multiplication | * | x * y | x multiplied by y | 
| Division | / | x / y | x divided by y | 
| Modulus | % | x % y | The 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.
算术赋值操作符
| Operator | Symbol | Form | Operation | 
|---|---|---|---|
| Assignment | = | x = y | Assign value y to x | 
| Addition assignment | += | x += y | Add y to x | 
| Subtraction assignment | -= | x -= y | Subtract y from x | 
| Multiplication assignment | *= | x *= y | Multiply x by y | 
| Division assignment | /= | x /= y | Divide x by y | 
| Modulus assignment | %= | x %= y | Put the remainder of x / y in x | 
作者: grassofsky
出处: http://www.cnblogs.com/grass-and-moon
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(grass-of-sky@163.com)咨询.
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号