* 对应课程: 2.2.1 \~ 2.2.4
目录
表达式
表达式是一系列运算符和算子的组合, 用来计算一个值
+ 运算符 (operator) 是指进行运算的行为/动作
+ 算子 (operand) 是指参与运算的值, 可能是常数/变量/函数的返回值
举例: 计算时间差
输入两组”小时 时间”, 结果也用相同格式打印出来
int hour1, minute1;
int hour2, minute2;
scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);
int delta_time = (hour2 - hour1) * 60 + minute2 - minute1;
printf("时间差是%d小时%d分钟", delta_time/60, delta_time%60);
运算符优先级
举例: 求平均值
写一个程序, 输俩整数, 输出平均值
int a,b;
printf("输入两个整数, 用空格空开\n");
scanf("%d %d", &a, &b);
double c = (a+b)/2.0;
printf("%d和%d的平均值=%f\n", a, b, c);
注意:
+ 两个算子的运算符属于 双目运算符, 比如a+b
类似的, 只有一个算子的成为的 单目运算符, 比如a*-b
这种情况下, 运算符-
对应的运算称为 “单目取负”, 其优先级高于乘法
+ 在C语言中, 赋值运算符 =
被视作运算符, 而非特殊动作
– 即, 赋值也属于运算, 也有结果
– a=6
的结果是6
– a=b=6;
+ 等价于a=(b=6);
+ 等价于b=6; a=b;
交换两个变量
经典中的经典了
int a = 5;
int b = 6;
int t;
t=a;
a=b;
b=t;
printf("a=%d; b=%d",a,b);
经典方法二
int a = 5;
int b = 6;
a = b - a;
b = b - a;
a = a + b;
printf("a=%d; b=%d",a,b);
复合赋值
形如+=
-=
*=
/=
和 %=
的运算符称为 复合运算符
total+=12;
等价于
total = total + 12;
++
和 --
是特殊的单目运算符, 称为 递增运算符 和 递减运算符
该运算符放在算子的前后分别叫做 前缀形式 和 后缀形式
其中:
+ 前缀得到的是运算之后的值
+ 后缀可以理解为 “副作用”, 得到的是运算前的值(之后再加加减减)