C语言学习笔记(八)表达式与运算符

 前言:

       由于对C语言的理解不够深刻,且距离上次学习C语言的时间过于“久远”,所以本人准备重新开始学习C语言。

        那么刚好借这个机会,既向大家分享我的学习笔记,同时又能监督我自己去努力学习这门语言,为将来从事嵌入式行业打下基础!!

学习C语言是很漫长的,要重新整理一遍学习的内容更是反复且枯燥的。但不积跬步,无以至千里,没有什么事情是一蹴而就的,我们要学会沉下心来,一起努力,一起期待未来!!

        今天的笔记主要是围绕认识与运用表达式与运算符:了解表达式的定义以及常用类型,了解运算符并熟悉运算符的运算优先级,表达式与运算符的运用。

目录

表达式

表达式的定义

表达式常用类型

常量表达式

算术表达式

赋值表达式

关系表达式

逻辑表达式

复合表达式

运算符

算数运算符

加法运算符+

减法运算符-

符号运算符+ -

乘法运算符*

除法运算符/

取余运算符%

自增、自减运算符++ --

赋值运算符=

一元运算符与二元运算符区别

运算符优先级

表达式与运算符的运用

表达式

表达式的定义

        在C语言中,由一个或多个运算符将一个或多个变量、常量、函数调用返回值结合的语法结构,称之为表达式。

	2023;
	'A';
	"JICHI";
	a + b;
	a - b;
	10 * a / b % 2;
	a++;
	b--;

在示例代码中,这些都是合法的表达式。当然a、b都需要提前声明并进行初始化定义。

表达式常用类型

常量表达式

	4;
	6.18;
	'A';

用作常量的式子,并且可在可使用常量的任何位置使用。

算术表达式

	a + b;
	a - b;
	a * b;
	a / b;
	a++;
	++a;

用算术运算符和括号将运算对象连接起来的的式子。

赋值表达式

	a = b;
	a = b - 1;
	a = 12;

用赋值运算符将运算对象连接起来的的式子。

赋值号左边必须为左值,赋值号右边的右值可以为常量、变量或表达式。

关系表达式

    a < b;
	a >= b;
	a == b;
	a != b;

用关系运算符将两个运算对象连接起来的式子。

关系表达式的值是一个逻辑值,即“真”或“假”

在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

逻辑表达式

	!a;
	a && b;
	a || b;

用逻辑运算符将两个运算对象连接起来的式子。

逻辑表达式的值是一个逻辑值,即“真”或“假”

在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

复合表达式

a = 9 % 2 - 2 * +2 && 2 || !1;

用作算数、关系、逻辑运算对象混合运算的式子。

需要考虑运算时运算符的优先级。

运算符

算数运算符

加法运算符+

	int a, b;
	a = 100;
	b = 10;
	a + b;//结果为110

在示例代码中,+ 为加法运算符,它左右边各需要一个运算对象,构成加法运算符表达式,其结果为左右表达式结果相加

减法运算符-

	int a, b;
	a = 100;
	b = 10;
	a - b;//结果为90

在示例代码中,-  为减法运算符,它左右边各需要一个运算对象,构成减法运算符表达式,其结果为左右表达式结果相减

符号运算符+ -

    -99;//结果为-99
    +99;//结果为99
    -(-99);//结果为99

在示例代码中,+ - 号为符号运算符,可用于改变表达式的正负,且负负得正。

乘法运算符*

	int a, b;
	a = 100;
	b = 10;
	a * b;//结果为1000

在示例代码中,*  为乘法运算符,它左右边各需要一个运算对象,构成乘法运算符表达式,其结果为左右表达式结果相乘

除法运算符/

	int a, b;
	a = 100;
	b = 10;
	a / b;//结果为10

在示例代码中,/  为除法运算符,它左右边各需要一个运算对象,构成除法运算符表达式,其结果为左运算对象除以右运算对象

注意:当左右运算对象都为整型时,除法运算符表达式的结果也为整型,无法输出浮点数;若想求出浮点数,可将运算对象的数据类型进行初始化定义或强制类型转换。例如:

    float a;
	int b;
	a = 9;
	b = 2;
	a / b;//结果为4.5

取余运算符%

	int a, b;
	a = 105;
	b = 10;
	a % b;//结果为5

在示例代码中,%  为取余运算符,它左右边各需要一个运算对象,构成取余运算符表达式,其结果为右运算对象对左运算对象求余

自增、自减运算符++ --

#include "stdio.h"

void main()
{
	int a, b, c, d;
	a = b = 0;
	c = d = 1;
	printf("前缀自增过程a=%d 后缀自增过程b=%d\n", ++a, b++);
	printf("前缀自增结果a=%d 后缀自增结果b=%d\n", a, b);
	printf("前缀自减过程c=%d 后缀自减过程d=%d\n", --c, d--);
	printf("前缀自减结果c=%d 后缀自减结果d=%d\n", c, d);
}

在示例代码中,++ 为自增运算符,-- 为自减运算符。它仅需要运算符左边或右边有一个运算对象即可。

运算符置于左边被称作前缀;置于右边被称作后缀。

前缀与后缀的区别

我们运行示例代码

我们可以发现:

在前缀自增或自减的过程中,数值就已经变化了,表达式的结果为运算对象值加减1。

在后缀自增或自减的过程中,数值没有发生变化,但表达式的结果为运算对象值加减1。

那我们就可以总结出:

前缀自增或自减先进行运算再进行取值;后缀自增或自减先进行取值再进行运算。

赋值运算符=

	a = 105;

在示例代码中,=  为赋值运算符,它左右边各需要一个运算对象,构成赋值运算符表达式,其结果为等号右边运算对象的值

一元运算符与二元运算符区别

一元运算符只有一个运算对象的运算符,自增自减运算符;

二元运算符有两个运算对象的运算符,如加减法运算符,赋值运算符。

运算符优先级

优先级顺序从高到低如下表所示: 

 

表达式与运算符的运用

        当我们了解了表达式与运算符的基本原理,就可以进行一些简单的运用:

拆分一个三位数的个位、十位、百位:

#include "stdio.h"
#include "math.h"
void main()
{
	int a,b,c,d;
	printf("请输入三位数:");
	scanf("%d", &a);
	b = a / 100;
	c = a % 100 /10;
	d = a % 10;
	printf("百位 %d 十位 %d 个位 %d\n", b, c, d);
}

求1-100能被5整除的数:

#include "stdio.h"

void main()
{
	int num = 1;
	printf("1-100能被5整除的数:\n");
	while (num <= 100)
	{
		if (num % 5 == 0) printf("%d  ", num);
		if (num % 20 == 0) printf("\n");
		num++;
		
	}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸡翅爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值