C语言学习笔记(二)表达式及运算

表达式及运算

1. 表达式

—个表达式是一系列运算符和算子的组合,用来计算一个值。

eg:amount = a * (1 + b);

表达式包括运算符(operator)和算子(operand)。运算符是指进行运算的动作,比如加法运算符+,减法运算符-。算子是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值。

在这里插入图片描述
eg:输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示:

#include "stdio.h"

int main(){
	int hour1,min1;
	int hour2,min2;
	
	scanf("%d %d",&hour1,&min1);
	scanf("%d %d",&hour2,&min2);
	
	// 将时间换算成分钟
	int t1 = hour1 * 60 + min1;
	int t2 = hour2 * 60 + min2; 
	
	int t = t2 - t1;
	printf("时间差是%d小时%d分。", t / 60, t % 60); // t/60->小时部分,t%60->分钟部分
	return 0;
} 

2. 运算符的优先级

写一个程序,输入两个整数,输出他们的平均值:

#include "stdio.h"

int main(){
	int a, b;
	scanf("%d %d", &a, &b);
	double c = (a + b) / 2.0;
	printf("%d和%d的平均值为%f\n", a, b, c);
	return 0;
} 

运算符的优先级如下:

优先级运算符运算结合关系举例
1+单目不变自右向左a*+b
1-单目取负自右向左a*-b
2*自左向右a*b
2/自左向右a/b
2%取余自左向右a%b
3+自左向右a+b
3-自左向右a-b
4=赋值自右向左a=b

注:赋值也是运算,也有结果
eg:a=6的结果是a被赋予的值,也就是6
eg:a=b=6a=(b=6)

嵌入式赋值:

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

嵌入式赋值不利于阅读,容易产生错误,不建议使用

3. 交换两个变量

如果已经有:

int a = 6;
int b = 5;

如何交互ab两个变量的值?

思路:定义一个新的变量t,先将a的值赋给t,这样a就空出来了,再将b的值赋给a,最后将t的值赋给b,这样就完成了ab两个变量值的交换,具体规程如下图所示:
在这里插入图片描述
代码如下:

#include "stdio.h"

int main(){
    int a = 5;
    int b = 3;
    int t;
    t = a;
    a = b;
    b = t;
    printf("a=%d,b=%d", a, b);
    return 0;
}

代码运行时,可以选择使用调试工具查看代码运行情况,在行前打上断点,点击调试按钮即可观察代码运行情况,如下图所示:
在这里插入图片描述

4. 复合赋值

5个算术运算符,-*/%,可以和赋值运算符=结合起来,形成复合赋值运算符:+=-=*=/=%=

eg:total += 5;
等价于total = total + 5;

注:两个运算符中间不要有空格!

递增递减运算符
++--是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1

eg:count++
等价于count += 1count = count + 1

前缀后缀:
++--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。

注:a++的值是a1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加了1了。

具体见如下代码:

#include "stdio.h"

int main(){
    int a;
    a = 10;

    printf("a++=%d\n", a++); 
    printf("a=%d\n", a);

    printf("++a=%d\n", ++a);
    printf("a=%d\n", a);

    return 0;
}

结果如下:
在这里插入图片描述
a++作为一个表达式的结果是a+1以前的结果10,做完a++这个动作造成的结果就是a变成了11。在11的基础上,++a这个表达式的结果是12,做完++a这个动作后a变成了12

注:前缀的结果是加1以后的,其副作用是使得a的值加了1。后缀的结果是加1以前的,其副作用也是使得a值加了1。

表达式运算表达式的值
count++count1count原来的值
++countcount1count+1以后的值
count--count1count原来的值
--countcount1count-1以后的值

注:千万不要将复合赋值运算符和其他运算符放在一起使用,代码不易理解且易错!!!

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值