设为首页 加入收藏

TOP

二级C++精品课程3-1-1:C++运算符之算术运算符
2014-11-20 13:35:23 】 浏览:9319
Tags:二级 精品课程 3-1-1 运算 符之 算术

  所谓运算符就是指运算的符号,例如加运算符(+)、乘运算符(*)、取地址运算符(&)等。表达式与运算符密不可分,它由运算符与操作数组合而成,并由运算符指定对操作数要进行的运算,一个表达式的运算结果是一个值。本章中,我们将介绍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。




  这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则会产生一个不确定数,即计算机不能表示的数。计算机表示的常用数据类型的取值范围可以见下表。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇考纲分析:全国计算机等级考试二级.. 下一篇C++辅导:C++获取和设置时区

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目