zhyDaDa的个人站点

* 对应课程: 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;

++-- 是特殊的单目运算符, 称为 递增运算符递减运算符
该运算符放在算子的前后分别叫做 前缀形式后缀形式
其中:
+ 前缀得到的是运算之后的值
+ 后缀可以理解为 “副作用”, 得到的是运算前的值(之后再加加减减)

Avatar photo
我是 zhyDaDa

前端/UI/交互/独立游戏/JPOP/电吉他/游戏配乐/网球/纸牌魔术

发表回复