C语言运算符和逻辑表达式

运算符和表达式:

一、算术运算符:
注意:

​ 1.减号也可以做负号,做取负运算的时候,放在一个变量的前面表示这个变量的相反数

​ 2.取模(求余)运算的时候,左右两边的操作书,必须是整形数据(包括字符,字符是以ASCII码来参与运算的)。

​ 3.自加和自减运算,除了整数之外,浮点型,字符型,指针性都可以进行自增和自减。

​ 4.+ - * / %都是双目运算符,++ --是单目运算符,+ -在做取正和取负的时候,可以当作单目运算符。

自增和自减,分前缀和后缀两种情况:

​ a++:后缀自增,先将自增之前的值参与运算,本身也要参与运算

​ ++a:前缀自增,本身先做自增运算,再将自增之后的值参与运算

​ a–:后缀自减,先将自减之前的值参与运算,本身也要参与运算

​ --a:前缀自减,本身先做自减运算,再将自减之后的值参与运算

int a=10;
int b=a++;	///a = 11 b = 10
int a=10;
int b=++a;	///a = 11 b = 11
int a=10;
int b=a--;	///a = 9 b = 10
int a=10;
int b=--a;	///a = 9 b = 9
eg:
c = 10,b=20;
c = ++a + ++b;///a = 11,b = 21,c = 32
c = a++ + ++b;///a = 11,b = 21,c = 31
c = ++a + b++;///c=31
c = a++ + b++;///c=30
二、关系运算符:
> >= < <= == !=
attention:

1、关系运算符用于判断运算符两边的表达式是否满足给定的大小条件

2、由关系运算符组成的表达式称为关系表达式,其值为bool类型,要么成立,要么不成立

3、判断是否相等用的是双等号,而不是一个等号,一个等号表示赋值

​ 一般在判断两个值是否相等时,将常量写在等号的前面

if (-1 == fd)
	{
		printf("文件打开失败\n");
	}
在C语言中,非零即真
三、逻辑运算符:
&& || !
attention:

​ 逻辑反:将逻辑真假取反,真变假,假变真

​ 逻辑与:将两个表达式串联起来,且左右两边的表达式都为真时,结果为真

​ 逻辑或:将两个表达式串联起来,且左右两边的表达式都为假时,结果为假

特殊规则:

​ 逻辑与:如果左边的表达式的结果为假,那么右边的表达式就不在计算.

​ 逻辑或:如果左边的表达式的结果为真,那么右边的表达式就不在计算.

四、位运算符
& | ~ ^ << >>
attention:

位运算就是对这个操作数的每一位进行位运算,不管是八进制,十进制,还是十六进制,在进行位运算时,都要转换成二进制进行运算。

五、赋值运算符

简单赋值运算符:=

不能对常量赋值,只能对变量赋值。

不能对数组赋值,但是可以对数组的单个元素进行赋值

可以连续赋值,从右往左依次赋值

复合赋值运算符:+= -= *= /= %= &= |= ^= <<= >>=

当左右两边有相同的操作数时,采用复合赋值运算,不仅直观,更利于代码的可读性,提高运行效率

attention:
	a ~= b;///非法
	a = ~b;//ok
六、内存存取运算符
&       取地址   &x      取变量x的地址
*       解引用   *x      得到x地址里面的数据
[]      下标     x[2]    拿到数据下标为2的这个元素的值
.       取成员   x.y      拿到结构体变量x里面成员名为y的值
->      取成员   x->y    拿到结构体指针x里面成员名为y的值
七、特色运算符
1、三目运算符

​ ? :

​ 唯一一个需要用到三个操作数据运算符

​ 语法:表达式1?表达式2:表达式3

int n = 100;
int m = 200;
int c;

c = (n>m)?n:m;
	printf("c = %d\n", c);
2、sizeof

作用:计算制定数据类型或者变量所占空间字节大小

语法:sizeof(数据类型),sizeof(变量名),sizeof 变量名,在计算变量名的时候可以省略括号,计算数据类型的时候,不可以,原因 struct node

int a;
printf("sizeof a = %ld\n", sizeof a);   //空格可以省略
printf("sizeof(a) = %ld\n", sizeof(a));
printf("sizeof(long) = %ld\n", sizeof(long));
3、return运算符

作用:退出某个函数(return在main函数里面,整个程序就退出了)

只能放在函数体内,不能放在函数体外,在函数体内,可以返回对应的数据

4、()函数调用

​ 调用函数的时候,在函数名后面的括号

​ 函数名(参数列表)

运算的时候,(++a), (a > b) , (a && b)

5、,逗号运算符

从左往右依次计算,取最后一个表达式的结果,作为逗号表达式的值

int a = 20;
int b = 40;
int c = (a++, b++, a+b, a = b-a, a-b);
八、优先级
优先级:

当一个表达式里面出现多个不同的运算符的时候,要考虑那个运算符先做,那个运算符后做,先乘除,在加减

结合性:

当这个表达式里面出现的运算符优先级相同的时候,那么就要根据这个运算符的结合性来运算

​ 《优先级》 《运算符及其含义》 《 结合性》
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9aylZxJ-1649918803142)(C:\Users\yyh\AppData\Roaming\Typora\typora-user-images\image-20220414142938614.png)]

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yengi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值