计算(表达式)
Suzhou 667 0

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

#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分\n",(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。 ::: tip 单目运算符一般用于想要对某一个变量取负时,如想要取得变量a的相反数,取负操作是在变量a前加上一个单目运算符“-”。 单目运算优先级最高。 ::: 结合关系:相同优先级的运算中,除单目运算和赋值运算以外,均为自左向右。 ::: tip 单目运算符的算子一定出现在右边。 ::: ::: warning 避免“嵌入式赋值”

int a=6;
int b;
int c=1+(b=a);

“嵌入式赋值”不利于阅读且容易造成误解。 :::


交换变量 两个变量a=5,b=6,交换两个变量的值,如果采用a=b,b=a的方式,程序依次执行,最终结果是a=b=6。 ::: tip 程序表达动作而不是关系。 ::: 交换两个变量值需要引入第三个变量c。先将变量a的值暂存在变量c中,再把b的值赋给a,再把t的值赋给b。即:c=a;a=b;b=c。


复合赋值 “+-/%”五个算术运算符可以和赋值运算符“=”结合组成复合赋值运算符“+=、-=、=、/=、%=”。 ::: warning 复合赋值运算符中两个运算符之间没有空格。 :::

a += 5 + 9
    a = a + (5 + 9)
a /= b + 6
    a = a / (b + 6)

递增递减运算符 “++”和“--”是两个单目运算符,只能有一个算子,还必须是变量,分别叫做递增运算符和递减运算符。作用是让变量+1或-1。

count ++ ;
count += 1;
count = count + 1;

递增运算符和递减运算符可以放在变量的前面叫做前缀形式,也可以放在变量的后面叫做后缀形式。 ::: warning “a++”和“++a”,设a = 1。 a++是a加1以前的结果,指代先取a的值1再令a=a+1,附带作用是使得变量a的值+1变为2;(运算完后自增1) ++a是a加1以后的结果,指代先使a=a+1再取a的值2,附带作用是使得变量a的值+1变为2。(自增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。 计算(表达式) ::: tip ++和--两个运算符可以单独使用,但不要组合进入表达式。 :::

评论区