c语言笔记-----运算符和表达式(算术,自增自减,关系,赋值,逻辑运算符及其表达式,运算符和优先级总结)

运算符

一、运算符和表达式的相关概念以及分类:
**1、运算符的概念:**运算符就是一些特定的符号,用来表示针对数据的特定操作,也称之为操作符。
2、运算符的分类:分类方法不同,结果不同。
**1)**根据参与运算对象的多少可分为:单目(也称为一元运算符),双目(也称作二元运算符),三目(也称为三元运算符)
**2)**根据运算作用不同可分为:算术运算符、条件运算符、关系运算符、赋值运算符、逻辑运算符、逗号运算符、位操作运算符等。
*
*

**3、表达式的概念:**表达式最基本的形式就是一个数据,也称为操作数。操作数可以是任意类型的常量或变量,操作数与运算符结合起来可以构建一个新的表达式,继而使用多个运算符连接多个操作数可以形成更为复杂的表达式。
2)构成: C语言中的表达式由运算符、常量、变量所组成,结尾不能加分号。例如(-1)(-a)(-a+1) (-a+1*2,5) 都是表达式。
:3)注意在对表示求值时,要先执行表达式优先级高的;如果操作数两侧的运算符优先级相同,则按运算符的结合性处理,比如a+b-c,由于加与减的优先级相同,而算术运算符的结合性为从左到右,所以先执行a加b的结果,再用该结果减去C。
4)表达式命名:由表达式中优先级最低的运算符名称决定。
5)由“表达式”加“分号”构成的语句称为表达式语句。

二、算术运算符和算数表达式:
**1、**算术运算符是对 数值类型的变量进行运算的,在 C 程序中 使用的非常多,属于双目运算符,结合性从左到右,优先级为(*,/,%)>(+,-);
2、细节说明:

  1. 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x= 10/3 ,结果是 3。只有当除数或者被除数其中有浮点型数据时,才会出现小数部分。
  2. 当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到 取模的一个本质运算。注意:“%”取余运算要求连接的两个操作数都是整数时才有效,否则不能执行。
    3)除取余运算限制使用整形外,其他的算术运算符可以是任意类型。但是需要注意除法运算。

3、代码演示:

算术运算符: 
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a=-5,b=3,c;
	c=(a/b)*b;
	printf("%d\n",c);
	c=a%b;
	printf("%d\n",c);
	c=a/b*b+a%b;
	printf("%d\n",c);
	system("pause");
	return 0;
}```
结果为:
(-3(-2)
(-5)

三、自增自减运算符及其表达式:

1、知识点:自增自减运算符为单目运算符,结合性为从右到左,包括++,— —;自增自减的运算符优先级大于算术运算符;要求操作数是变量;

2、使用细节:

  1. 当 自增 当做一个独立语言使用时,不管是 ++i; 还是 i++; 都是一样的,等价。
  2. 当 自增 当做一个 表达式使用时 j = ++i 等价 i = i + 1; j = i;
  3. 当 自增 当做一个 表达式使用时 j = i++ 等价 j = i; i = i + 1;

3、代码演示:

自增自减运算符:
#include<stdio.h>
void main() {
int i1 = 10, i2 = 20;
int i = i1++;//i =10, i1=11
printf("i=%d\n",i);// 10
printf("i1=%d\n", i1);//11
i = ++i1;
printf("i=%d\n", i);//12
printf("i1=%d\n", i1);//12
i = i2--;
printf("i=%d\n",i);// 20
printf("i2=%d\n",i2);//19
i = --i2;
printf("i=%d\n", i);//18
printf("i2=%d\n", i2);//18
getchar();
}

四、关系运算符和关系表达式:
1、知识点:
1)关系运算符有6种关系,分别为小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)、不等于(!=)。
2)结果值:
关系运算符的值只能是0或1。
关系运算符的值为真时,结果值都为1。
关系运算符的值为假时,结果值都为0。
3)关系运算符都是双目运算,优先级为(>,<,>=,<=)>( == , != )

五、赋值运算符及其表达式:
1、知识点:赋值运算符就是将 某个运算后的值,赋给指定的变量,结合性为"从右向左"。
在这里插入图片描述
2、赋值运算符特点:

  1. 运算顺序从右往左
  2. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
  3. 复合赋值运算符等价于下面的效果
    比如:a+=3;等价于 a=a+3;
  4. 注意在运算时,可能截断小数点后面的部分。比如;
int a = 10;
a += 1.7; // a = a + 1.7 =>11.7 => 11
a= 11

3、代码演示:

#include <stdio.h>
#include<stdlib.h>
void main() {
//+= 的案例,其它的类似 -= *= /= %=
int c = 12;
int a2 = 10;
//有两个变量,a 和 b,要求将其进行交换,最终打印结果
int a = 10;
int b = 20;
//思路是通过一个临时变量来实现 a , b 值的交换
int temp = a;
a = b;
b = temp;
c += 3; // 等价 c = c + 3;
//c += b;// 等价 c = c + b;
a2 += 1.7;
printf("\na=%d b=%d c=%d a2=%d", a, b, c, a2);// a=20, b = 10 c = 15 a2=11
system("pause");
}

六、逻辑运算符及其表达式:
1、知识点: 用于 连接多个条件(一般来讲就是关系表达式), 最终的结果要么是真(非 非 0 表示),要么是 假(0 表示) ;其中逻辑非的结合性为从右向左。
在这里插入图片描述
2、注意,逻辑与和逻辑或有短路现象:
案例演示:

“逻辑与”
#include <stdio.h>
#include<stdlib.h>
void main() {
double score = 70;//成绩
if(score>=60 && score<=80){
printf("ok1");
} else {
printf("ok2");
}
int a = 10, b = 99;
//说明:
//1. 行 在进行 && 操作时, 如果第一个条件为 false , 则后面的条件不在判断
//2. 该现象称为 短路现象,所以 逻辑与 也称为 短路逻辑与
if(a < 2 && ++b>99) { //
printf("ok100");
}
printf("b=%d\n", b); //b=99
system("pause");
}
逻辑或:
#include <stdio.h>
#include<stdlib.h>
void main() {
int a = 10, b = 99;
//说明
//1. 在进行逻辑或时,如果第一个条件为真,则不再执行后面的条件,整个结果为真
//2. 为 该现象称为 此 逻辑或短路现象,因此 为 逻辑或也称为 短路逻辑或
if(a > 5 || b++>100) { //
printf("ok100");
}
printf("b=%d\n", b); // b= 99
system("pause");
}

七、运算符和优先级总结:
注意:结合结合性从右向左的有:赋值和复合赋值;逻辑非;自增,自减;取地址(&);正号,负号,(+,-); 类型转换;

在这里插入图片描述

  • 77
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值