计算(表达式)

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

 

 

#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=6int 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。

 

 ++和–两个运算符可以单独使用,但不要组合进入表达式。

posted @ 2021-06-04 16:34  _在远方  阅读(460)  评论(0)    收藏  举报