计算(表达式)
表达式
表达式是一系列运算符和算子的组合,用来计算值。
运算符是运算的动作,算子是参与运算的值,可以是常数,可以是变量,也可以是一个返回值。

#include <stdio.h> int main() { printf("计算两个时间差"); int hour1,minute1; int hour2,minute2; scanf("%d %d",&hour1,&minute1); scanf("%d %d",&hour2,&minute2); int t1=hour1 * 60 + minute1; int t2=hour2 * 60 + minute2; printf("时间差为%d小时%d秒",(t2-t1)/60,(t2-t1)%60); return 0; }
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 计算两个时间差1 50 2 10 时间差为0小时20秒Program exited with status 0
运算符优先级
#include <stdio.h> int main() { int a; int b; scanf("%d %d",&a,&b); double c= (a + b)/2.0; printf("%d和%d的平均值是%f",a,b,c); return 0; }
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 2 3 2和3的平均值是2.500000Program exited with status 0

双目运算符:在运算符左右有两个算子,如:5+6;
单目运算符:在运算符的右边有一个算子,如:-6。
提示
单目运算符一般用于想要对某一个变量取负时,如想要取得变量a的相反数,取负操作是在变量a前加上一个单目运算符“-”。
单目运算优先级最高。
结合关系:相同优先级的运算中,除单目运算和赋值运算以外,均为自左向右。
提示:单目运算符的算子一定出现在右边。
注意:避免“嵌入式赋值”
int a=6; int b; int c=1+(b=a);
“嵌入式赋值”不利于阅读且容易造成误解。
交换变量
两个变量a=5,b=6,交换两个变量的值,如果采用a=b,b=a的方式,程序依次执行,最终结果是a=b=6。
提示:程序表达动作而不是关系。
交换两个变量值需要引入第三个变量c。先将变量a的值暂存在变量c中,再把b的值赋给a,再把t的值赋给b。即:c=a;a=b;b=c。
复合赋值
“±/%”五个算术运算符可以和赋值运算符“=”结合组成复合赋值运算符“+=、-=、=、/=、%=”。
复合赋值运算符中两个运算符之间没有空格。
a += 5 + 9 a = a + (5 + 9) a /= b + 6 a = a / (b + 6)
递增递减运算符
“++”和“–”是两个单目运算符,只能有一个算子,还必须是变量,分别叫做递增运算符和递减运算符。作用是让变量+1或-1。
count ++ ; count += 1; count = count + 1;
递增运算符和递减运算符可以放在变量的前面叫做前缀形式,也可以放在变量的后面叫做后缀形式。“a++”和“++a”
a++是a加1以前的结果,附带作用是使得变量a的值+1;
++a是a加1以后的结果,附带作用是使得变量a的值+1。
#include <stdio.h> int main() { int a; scanf("%d",&a); printf("a++的值为%d\n",a++); printf("a的值为%d\n",a); printf("++a的值为%d\n",++a); printf("a的值为%d\n",a); return 0; }
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 10 a++的值为10 a的值为11 ++a的值为12 a的值为12 Program exited with status 0
上述程序中输入a的初始值为10,通过每一步的输出值,后缀形式a++为a+1前的值10,但a已经+1变为11;前缀形式++a为a+1后的值,即11+1=12,此时的a的值也变为12。
++和–两个运算符可以单独使用,但不要组合进入表达式。

浙公网安备 33010602011771号