您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C十十 >> 辅导 >> 正文    
  二级C++精品课程3-1-1:C++运算符之算术运算符 【注册男护士专用博客】          

二级C++精品课程3-1-1:C++运算符之算术运算符

www.nanhushi.com     佚名   不详 

  所谓运算符就是指运算的符号,例如加运算符(+)、乘运算符(*)、取地址运算符(&)等。表达式与运算符密不可分,它由运算符与操作数组合而成,并由运算符指定对操作数要进行的运算,一个表达式的运算结果是一个值。本章中,我们将介绍C++语言基本的运算符、表达式,各种运算符的优先级、结合性,以及不同数据类型的值之间的转换。

  C++语言中的运算符是可以让C++语言编译器能够识别的具有运算意义的符号。编译器把这些符号及其组成的表达式翻译成相应的机器代码,就可以由计算机运行得出正确的结果。
  其实,就象我们日常生活当中许多东西的名字,如冰箱、电视机等分别代表不同功能的电器设备一样,运算符就是代表C++语言中的各个运算功能的名字,这些名字是由制定C++语言规范的人员确定的。下面给出由运算符组成的表达式的例子:
  下面是几个表达式例子。如:
   100+200-300*200+1000/20+100%10
   a || b && c || d
   a = b + c + d*e
   a += b++
   c -= d--
  只要是按C++语法写出的表达式,编译器就能够解释其中的运算符和由运算符、操作数组成的表达式的意义。

  C++提供的运算符有以下几种:算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、逗号运算符、sizeof运算符及其它运算符(这是按功能分的)。不同的运算符,需要指定的操作数的个数并不相同。根据运算符需要的操作数的个数,可将其分为三种:单目运算符(一个操作数)、双目运算符(两个个操作数)和三目运算符(三个操作数)。下面,我们介绍几种基本的C++运算符。
  3.1.1算术运算符
  C++提供5种基本的算术运算符,参见表3-1。

表格 表3-1 5种基本的算术运算符
 
运算符 名字 实例
+ 12 + 4.9 // 得出16.9
- 3.98 - 4 // 得出-0.02
* 2 * 3.4 // 得出6.8
/ 9 / 2.0 // 得出4.5
% 取余 13 % 3 // 得出1

  这5个算术运算符都是双目运算符。除%运算符外,其它算术运算符的两个操作数可以是整型(short int、int、long int、unsigned short int、unsigned int或unsigned long int型)和实型(float或double型)的混合类型,运算结果的数据类型是:两个操作数的数据类型中,具有较高级别的数据类型(数据类型的级别,请参见3.3节)。例如,一个int型操作数和一个float型操作数的运算结果是float型;一个float型操作数和一个double型操作数的运算结果是double型。

  当除运算符(/)的两个操作数均为整数时,所得的结果总是被圆整化为整数。例如:
    9 / 2 // 得出 4, 不是4.5!
    -9 / 2 // 得出 -5, 不是-4!
  在程序设计中,我们有时可以利用整数除法获得所需要的结果,但也容易产生错误。如果两个操作数是整数,要获得实数除法,我们应当将两个或任一个整型操作数强制转换为实型数,例如:
    int cost = 100;
    int volume = 80;
    double unitPrice = cost / (double) volume; // 得出1.25
  执行除法运算时,如果除数为零,程序运行时,会产生一个被零除的错误。
  取余运算符(%)的两个操作数都必须是整型数,运算结果是整除后的余数。例如13%3的结果是1。
  算术运算的结果可能太大,而不能存储在一个指定的变量中,这种情形称之为溢出。例如:
    unsigned char k = 10 * 92; // 溢出: 920 > 255

  在进行除运算时,需要注意右操作数,即除数应为非零值,否则就会产生浮点运算错误。编程时,我们通常用if语句判别除数是否为0,例如:
  if (a != 0) // 只有a 不等于 0 时才执行下面的操作
  c = b / a;
  '%'为取余运算符,用于把它前面的整数值或表达式除以其后面的整数值或表达式,结果为不能被后面的整数或表达式整除的最小整数,它后面的数值应该为大于1的正整数。如表中所示的"13%7",就表示13 除以7余6。
  上面所有的运算符都是双目运算符,左右操作数可以是数值,也可以是表达式。根据左右操作数类型的不同会产生不同的结果。如:9 / 4 = 2,而9 / 4.0 = 2.5、9.0 / 4 =2.5、9.0 / 4.0 = 2.5。
  但'%'运算符的左右操作数必须是整数,否则,会产生编译错误。
  同时需要注意的是:加法和乘法运算有可能超过计算机能表示的最大数,产生溢出。如:1.e307 * 1.e307则会产生一个不确定数,即计算机不能表示的数。计算机表示的常用数据类型的取值范围可以见下表。
表格 表3-2
 
类型 最小值 最大值
signed char -128 +127
unsigned char 0 +255
signed short -32768 +32767
unsigned short 0 +65535
signed long -2147483648 +2147483647
unsigned long 0 +4294967295
Float -3.402823466e
+38F
+3.402823466e
+38F
Double -1.7976931348
623158e+308
+1.7976931348
623158e+308
  另外,整型的数值中有不同的类型如字符型、短整型、长整型。他们之间的类型转换需要特别的注意。如:


  一个无符号字符型的变量
  unsigned char a, b;
  a = 90*10; // 结果a 不等于900,而等于132,其实就是把900这个整数转化为无符号字符型数的结果,即(unsigned char )900的结果为132。
  b = 200+100; // 结果 b 不等于 300,而等于44。
  它们之间的优先级关系是运算符'*''/''%'相同,且优先于运算符'+'、'-'。在搞不清优先级关系时,最好用括号'('')'进行分离组合。如:
  (100.+20.) - (20 - 30) *40.
  需要注意的是:当这些符号出现在字符串中时,就被计算机的编译器处理成字符串中的字符,而不是运算符。如:字符?quot;ab+cd-def"中的'+'和'0'就只是代表两个字符而已。
  而且,'+' 、'-'运算符也可以作为单目运算符使用,如+100,-100分别表示正的100和负的100。当它们作为单目运算符时,将具有很高的运算优先级。具体可看3.2优先级和结合性一节。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目