表达式是由变量或常量与运算符号的组合,例如:num1+num2或age>18等。表达式中常用的符号称为运算符,这些运算符作用的变量或常量称为操作数。例如:在表达式age>18中,age和18是操作数,符号>为运算符。同样,在表达式num1+num2中,num1和num2均为操作数,符号+为算术运算符。在一些复杂的运算中,简单的表达式可以组合为复杂的表达式,其操作数本身可能就是一个表达式。例如(num1+num2)*(x+y),其中的操作数(num1+num2)和(x+y)本身就是表达式,并用运算符*相乘。
表达式的计算结果必须是一个值,如果表达式是一个条件,就会产生逻辑值结果,即真或假。在其他情况下,值通常为计算的结果。
算术运算符用在算术表达式中,其作用和数学中的运算符相同,下表列出了C语言支持的算术运算符。
|
运算符 |
描述 |
例子 |
|
+ |
双目运算符,对运算符两边的操作数进行相加操作 |
10+20=30 |
|
- |
双目运算符,对运算符两边的操作数进行相减操作 |
30-20=10 |
|
* |
双目运算符,对运算符两边的操作数进行相乘操作 |
10*20=200 |
|
/ |
双目运算符,对运算符两边的操作数进行相除操作 |
20/10=2 |
|
% |
双目运算符,对运算符两边的操作数进行取余操作 |
10%8=2 |
|
++ |
单目运算符,对运算符左边的操作数或 运算符右边的操作数做加1操作 |
a++等同于a=a+1 ++a等同于a=a+1 具体区别后面讲述 |
|
-- |
单目运算符,对运算符左边的操作数或 运算符右边的操作数做减1操作 |
a--等同于a=a-1 --a等同于a=a-1 具体区别后面讲述 |
取余运算符
取余运算符是双目运算符,运算结果是运算符左边的操作数除以运算符右边的操作数后所得的余数。例如:10%8=2、15%5=0等。
假设 a % b =c(余数为d),其中a和b均为整数,则余数d为a % b的结果。
自增自减运算符
自增自减是单目运算符,只需要一个操作数参加运算。例如:a++、++a、a--、--a等。其中,a是操作数,++是自增运算符,--是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的后面,例如++a、 a++。
自增(++):将变量的值加1,分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。
例如:
int a=10;
printf("a=%d",a++);
上述语句执行结果为:a=10,为什么不是11呢?自增后缀式是先使用再自增,因此先输出a的当前数值,然后a再做加1操作。
int a=10;
printf("a=%d",++a);
上述语句执行结果为:a=11,自增前缀式是先自增再使用,变量a先做加1操作,然后再输出。
自减(--):将变量的值减1,分前缀式(如--a)和后缀式(如a--)。前缀式是先减1再使用;后缀式是先使用再减1。
例如:
int a=10;
printf("a=%d" ,a--);
上述语句执行结果为:a=10,为什么不是9呢?自减后缀式是先使用再自减,因此先输出a的当前数值,然后a再做减1操作。
int a=10;
printf("a=",--a);
上述语句执行结果为:a=9,自减前缀式是先自减再使用,变量a先做减1操作,然后再输出。
【例1】算术运算符练习
程序清单 sample.c
#include <stdio.h>
int main()
{
// 声明变量
int a = 20;
int b = 10;
int muliti;
int div;
int sub;
//a与b相加的结果赋值给声明的整型变量sum
int sum = a+b;
printf("a+b = %d\n",sum);
//a与b相减的结果赋值给声明的整型变量sub
sub = a-b;
printf("a-b = %d\n",sub);
//a与b相乘的结果赋值给声明的整型变量sub
muliti = a*b;
printf("a*b = %d\n",muliti);
//a与b相除的结果赋值给声明的整型变量sub
div = a/b;
printf("a/b = %d\n",div);
return 0;
}