由算术运算符与运算量构成的表达式称为算术表达式。算术运算符包括基本算术运算符和自增、自减运算符。基本算术运算符对数值型也包括字符型数据进行加、减、剩、除四则运算。自增自减运算符对字符型、整型等变量进行加1、减1运算。算术运算符的运算的表达方式、运算功能如表所示。
下面是算术运算符的具体运用原则。
- +(正)、-(负)运算符是属于同一级别的单目运算符,结合方向是自右向左。
- +(加)、-(减)运算符是属于同一级别的双目运算符,结合方向是自左向右。例如a+b-c+d,这个式子在运算顺序是先求a与b的和,然后减去c,得到差与d相加。在C语言中,加、减运算符与数学中的运算符含义完全相同。
*
,/,%是同一级别的双目运算符,结合方向是自左向右。即它们在运算过程中同时出现时,按照它们出现的顺序进行运算。这三种运算的优先级别高于+(加)、-(减)运算符。例如:a+b*c
,运算顺序是先计算b与c的乘积,然后再与a求和,即a+(b*c)
。- /(除法运算符)的除数不能为0,即不能用一个数去除以0。
*
(乘号运算符)在式子中不能省略,也不能写成是代数式子中的乘号“×”或“·”。这一点要特别注意。例如:求长方体的体积公式为abc,在编程时要写成a*b*c
。- 两个整型数相除,得到整型结果。如果两个实数相除或其中有一个是实数,那么得到的结果为实数型。例如:
5/3=1,2/4=0,5/-3=1,5./3=1.666667,5.0/3.0=1.666667
- %求余运算符(或称求模运算),只适合于整型数据和字符型数据。求余运算的结果符号与被除数相同,其值等于两数相除后的余数。
5%3 /* 值为2 */
3%5 /* 值为3 */
10%2 /* 值为0 */
-2%-3 /* 值为-2 */
-7%-3 /* 值为-1 */
++
、--
(自增、自减运算符)属于同一级别的单目运算符,结合方向是自右向左。自增、自减运算符只能与变量结合使用,放在变量的前面或后面。有以下4种形式。++a
:a的值先增加1后,再参与其他运算。a++
:a的值先参与其他运算,再使a的值增加1。--a
:a的值先减小1后,再参与其他运算。a--
:a的值先参与其他运算,再使a的值减小1。
例如:
m=3;m1=m++;
运算的过程是先将m的值赋给m1,然后m的值再加1,上面两个语句等价于:
m=3;m1=m;m++;
示例:
#include <stdio.h>
void main( )
{
int k1,k2,a,b; /*定义四个整型变量*/
k1=3; /*对k1赋值为3*/
k2=3; /*对k1赋值为3*/
a=++k1; /* k1的先增加1后,再赋值给变量a*/
b=k2--; /*k2的先赋值给变量b,然后k2的值再增加1*/
printf("a=%d,k1=%d\n",a,k1); /*输出a、k1的值*/
printf("b=%d,k2=%d\n",b,k2); /*输出b、k2的值*/
}
运行结果为:
a=4,k1=4
b=3,k2=2
对于自增、自减运算符,做以下几点说明:
- 自增或自减函数只能用于变量,不能用于常量或表达式。例如,
(a+b)++
这样的表示方法是错误的。 - 在一个表达式中对一个变量自增或自减多次,可能造成困惑。
a=3;k=(++a)+(++a);
这种程序很容易出错,在编程的过程中要避免使用这样的程序,而且也没有必要使用如此难懂的程序,完全可以使用另一种方法来表示,增加程序的可读性。 ++
、--
运算符的结合方向是自右向左,即当优先级别相同的运算符在一起时,从右向左算,如:-i++
等价于-(i++)
。++
、--
运算符的优先级大于乘、除、求余的优先级。++
、--
运算符运算的操作对象只能为整型变量、字符型变量和指针变量,而不能是其他类型的变量。++
、--
运算符运算常用于循环变量中,是循环变量自动加1或减1;也可用于指针变量,是指针指向前一个或后一个地址。++
、--
运算符在C语言的程序设计中是很有用的,在后面的文字中我们会经常用到,为程序设计增加了便利。
评论前必须登录!
注册