第五章、运算符与表达式

运算符是 C 语言表达式的组成部分,每一个不同的运算符表示不同的运算规则。

表达式和语句的概念

表达式语句 是编译原理里面的两个重要的概念。

什么是表达式

表达式是用于计算并一定能返回一个值的字面值、变量值或计算式,它一定能返回一个结果(数字、字符串、指针等),如 1 + 2 返回 3

什么是语句

语句 是程序执行的单位。通常一个语句作为一个完整的指令序列来执行,表达式 则是组成语句的基本单位。

白话文解释:

表达式就相当如现代汉语里面的字、词或短语,是组成一句话的基本单位。语句就相当于用字和词组成的一个完整的一句话,它能表示一个完整的意思。

1. 算术运算符

C 语言中的算术运算符 有如下 5 个。

+    // 加法
-    // 减法
*    // 乘法
/    // 除法
%    // 求余数(取模)运算(不能用于浮点数运算)

算术运算符的语法

左操作数  算术运算符 右操作数

什么是操作数

操作数(operand) 是指参与运算的数据。

说明

在 C 语言中,除赋值运算符(后面会讲)外,二元运算符都是先左后右的结合性,即左操作数先算。

示例

#include <stdio.h>

int main(int argc, char *argv[]) {
    int x = 7;
    int y = 2;
    float f = 3.1;

    printf("%d + %d = %d\n", x, y, x + y);
    printf("%d - %d = %d\n", x, y, x - y);
    printf("%d * %d = %d\n", x, y, x * y);
    printf("%d / %d = %d\n", x, y, x / y);
    printf("%d %% %d = %d\n", x, y, x % y);

    printf("%d + %f = %f\n", x, f, x + f);
    printf("%d - %f = %f\n", x, f, x - f);
    printf("%d * %f = %f\n", x, f, x * f);
    printf("%d / %f = %f\n", x, f, x / f);
    printf("1 + 2 * 3.14 = %f\n", 1 + 2 * 3.14);

    return 0;
}

运行结果:

7 + 2 = 9
7 - 2 = 5
7 * 2 = 14
7 / 2 = 3
7 % 2 = 1
7 + 3.100000 = 10.100000
7 - 3.100000 = 3.900000
7 * 3.100000 = 21.699999
7 / 3.100000 = 2.258065
1 + 2 * 3.14 = 7.280000

上述程序中的 +-*/和数学中的意义是一样的,计算中也是先算,后算。

求余数(%)是整数除法后得到整数的商后剩余的整数,比如7个苹果分给三个人,每个人分2个,剩余1个,这个 1 就是 73 求余数的结果。

说明:

  1. 在 C 语言中,整数和整数运算的结果也是整数类型不会提升为浮点数。因此 7 / 3 的结果是 2 而不是浮点数 2.333333
  2. 不同类型的数据类型进行运算,默认会类型提升,即:整数和浮点数运算结果是 浮点数,如:7 / 3.0 的结果就是浮点数 2.333333 了。
  3. 求余数运算符(%)不能用于浮点数运算。

练习

  1. 写一个程序,输入两个整数,打印这个两个数相加、相减、相乘、相除和求余数的值。
  2. 写一个程序,输入两个小数,打印这个两个数相加、相减、相乘、相除值。