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

文章作者 100test 发表时间 2007:04:06 21:30:15
来源 100Test.Com百考试题网


计算机等级考试训练软件《百宝箱》

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

  C 语言中的运算符是可以让C 语言编译器能够识别的具有运算意义的符号。编译器把这些符号及其组成的表达式翻译成相应的机器代码,就可以由计算机运行得出正确的结果。
  其实,就象我们日常生活当中许多东西的名字,如冰箱、电视机等分别代表不同功能的电器设备一样,运算符就是代表C 语言中的各个运算功能的名字,这些名字是由制定C 语言规范的人员确定的。下面给出由运算符组成的表达式的例子:
  下面是几个表达式例子。如:
   100 200-300*200 1000/20 100
   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
  另外,整型的数值中有不同的类型如字符型、短整型、长整型。他们之间的类型转换需要特别的注意。如:

相关文章


二级C 精品课程3-1-4:C 运算符之逻辑运算符
二级C 精品课程3-1-2:C 运算符之关系运算符
二级C 精品课程3-1-2:C 运算符之自增、自减运算符
二级C 精品课程第三章运算符和表达式课前索引
二级C 精品课程3-1-1:C 运算符之算术运算符
考纲分析:全国计算机等级考试二级C 语言程序设计辅导
二级C 精品课程第二章小结与课后习题
二级C 精品课程2-7:输入和输出
二级C 精品课程2-6:枚举类型的相关知识
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛