1.运算符概述
运算符是一种编译器执行特定的数学或逻辑操作的符号。C语言提供了以下类型的运算符:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 条件运算符
- 其他运算符
2.算术运算符
算术运算符分为单目运算符和双目运算符,单目运算符表示只需要一个操作数,双目运算符需要两个操作数。
2.1 双目算术运算符
- 1)+ :加法,把两个操作数相加
- 2)- :减法,从第一个操作数中减去第二个操作数
- 3)* :乘法,把两个操作数相乘
- 4)/ :除法,第一个操作数除以第二个操作数
- 5)% :求模(取余),第一个操作数除以第二个操作数所得余数
双目运算符中,C语言中的加号、减号与数学中的一样。乘号、除号因为ASCII符号中没有与数学中相对应的符号,所以使用星号表示乘号,使用斜线表示除号。C语言中增加了一个求模运算符,是用来取余的。需要注意的是,求模运算符的两个操作数必须是整型。
【实例6.1】加减乘除以及取模运算
#include <stdio.h>
int main()
{
int a = 21;
int b = 10;
int c;
float d = 2.5;
double e;
int f = -21;
int g = -10;
c = a + b;
printf(" a + b = %d\n", c);
c = a - b;
printf(" a - b = %d\n", c);
c = a * b;
printf(" a * b = %d\n", c);
c = a / b;
printf(" a / b = %d\n", c);
e = a / d;
printf(" a / d = %lf\n", e);
c = a % b;
printf(" a %% b = %d\n", c);
c = a % g;
printf(" a %% g = %d\n", c);
c = f % b;
printf(" f %% b = %d\n", c);
c = f % g;
printf(" f %% g = %d\n", c);
return 0;
}
执行以上程序,输出结果为:
a + b = 31
a - b = 11
a * b = 210
a / b = 2
a / d = 8.400000
a % b = 1
a % g = 1
f % b = -1
f % g = -1
实例解析:
加、减与数学中的一样,其中需要说明的是除法以及取模运算。C语言中的除法运算,不同类型的除数和被除数会导致不同类型的运算结果。一种情况是,当除数和被除数都是整数时,运算结果也是整数。当不能整除时,就直接舍弃小数部分,只保留整数部分。另一种情况是,一旦除数和被除数中有一个是小数,那么运算结果也是小数,并且是double类型的小数。C语言中的取余运算,就是求相除后的余数。取余运算中%的两边都必须是整数,不能出现小数,否则会报错。余数可以是正数也可以是负数,由%左边的整数决定:如果%左边是正数,那么余数也是正数;如果%左边是负数,那么余数也是负数。
2.2 单目算术运算符
- 1)- :取负,把操作数乘以-1
- 2)++:自增运算符,把操作数增加1
- 3)--:自减运算符,把操作数减少1
单目运算符中,只需要一个操作数。取负操作符将正操作数设置为负数,负操作数设置为正数。自增运算符使得变量的值增加1,自减运算符使得变量的值减少1。比如:
i++;
j--;
变量i的值增加1,变量j的值减少1,相当于:
i = i+1;
j = j-1;
自增运算符和自减运算符的运算对象只能是变量,不能是常量或者表达式,否则将会报错。比如:
1++;//报错
--(i+1);//报错
自增运算符和自减运算符分为两种方式:一种是在变量前面,称为前缀模式;一种是在变量后面,称为后缀模