7月16日笔记C语言基础运算符(算术,关系,逻辑,位,特殊,逗号,条件,sizeof ,return,优先级与结合性)

为什么会有运算符表达式,什么是运算符表达式,有什么作用?

表达式就是表达某种意思,表达式用运算符连接操作数(指令执行操作的数据来源)的式子

1. 算术运算符

运算符

功能说明

举例

+

加法,一目取正

a+b

-

减法,一目取负

a-b

*

乘法

a*b

/

除法

a/b

%

取模(求余)

a%b

++

自加1

a++, ++b

自减1

a–, --b

  • 关注点:
    • 减号也是负号,比如 -a 是取变量 a 的相反数。
    • 取模运算要求左右两边操作数必须是整型数据。
    • 自加和自减运算不仅可以对整型操作,也可以对浮点数、指针操作。
  • 前后缀运算:
    • 前缀自加自减运算:先进行自加自减,再参与表达式运算
    1. 后缀自加自减运算:先参与表达式运算,在进行自加自减

int a = 100;

int b = 200;

int c = ++a; // a先自加1,变成101;然后再赋值给c,因此c等于101

int d = b++; // b先赋值给d,因此d等于200;然后b自加1,变成201

由关系运算符连接操作数组成的式子,叫做关系表达式

2. 关系运算符 (结果只有两种,要么为0(假),要么为1(真))

运算符

功能

举例

说明

>

大于

a > b

判断a是否大于b

>=

大于或等于

a >= 5

判断a是否大于或等于5

<

小于

3 < x

判断3是否小于x

<=

小于或等于

x <= (y+1)

判断x是否小于或等于y+1

==

等于

(x+1) == 0

判断x+1是否等于0

!=

不等于

c != ‘\0’

判断c是否不等于’\0’

  • 关注点:
    • 关系运算符用于判断运算符两边的表达式是否满足给定的大小条件。
    • 由关系运算符组成的表达式称为关系表达式,其值为布尔型。
    • 判断是否相等是双等号==,而不是一个等号。

表达某数理逻辑的表达式,对象以字节为单位

3. 逻辑运算符 (结果只有两种,要么为0(假),要么为1(真))

运算符

功能说明

举例

!

逻辑反

!(x==0)

&&  a&&b(只要)a为假,那么b不运算,这称之为惰性运算

逻辑与

x>0 && x<10

||

逻辑或

y<10

  • 运算规则:
    • 逻辑反:将逻辑真、假翻转,即真变假,假变真。
    • 逻辑与:将两个关系表达式串联起来,当且仅当左右两个表达式都为真时,结果为真。
    • 逻辑或:将两个关系表达式并联起来,当且仅当左右两个表达式都为假时,结果为假。

  • 特殊规则:
    • 在逻辑与运算中,如果左边表达式的值为假,那么右边表达式将不被执行。
    • 在逻辑或运算中,如果左边表达式的值为真,那么右边表达式将不被执行。

按bit位(一字节占用8bit)来进行运算操作的运算符,对象以bit位为单位

4. 位运算符  (将数值转成二进制后再运算)

运算符

名称

举例

功能说明

~

位逻辑反,按位取反

~a(单目运算)

~0001==1000

将变量 a 中的每一位取反

&

位逻辑与

a & b(双目运算)

1&1==1

1&0==0

将变量 a 和 b 逐位进行与操作

|

位逻辑或

a | b(双目运算)

1|1==1

1|0 == 1

0|0==0

将变量 a 和 b 逐位进行或操作

^

位逻辑异或(不同为真,相同为假

a ^ b(双目运算)

将变量 a 和 b 逐位进行异或操作

<<

左移

a << 4

将变量 a 中的每一位向左移动4位

>>

右移

x >> n

将变量 x 中的每一位向右移动4位

  • 位运算符操作的对象是数据中的每一位
  • 运算规则:
    • 位逻辑反、位逻辑与、位逻辑或拥有与逻辑运算相似的规则和一样的真值表
    • 异或运算:相同为0,不同为1
    • 移位运算:移出去的不要,空出来的补零。移位运算都是针对无符号数的运算。
    • C语言标准中右移如果是负数,最高位补1

5.逗号运算符

int a=1,b=2;

逗号运算符(优先级最低),从左往右运算

例如  a = 2,b = 1;

a = (1,2);//2 ,注意这个不是逗号运算符,因为( )优先级最高,所以是赋值运算

6. 特殊运算符

  • 赋值运算符
    • 不能对常量赋值,只能对变量赋值
    • 不能对数组赋值
    • 可以连续赋值,顺序从右到左

int a, b;

int x[5];

a = 100; // 对变量 a 赋值,正确

3 = 100; // 对常量 3 赋值,错误!

x = 123; // 对数组 b 赋值,错误!

// 连续赋值

a = b = 50; // 先将 50 赋给 b,再将 b 的值赋给 a,正确

  • 复合赋值符
    • 当左右两边有相同的操作数时,采用复合赋值符不仅直观,且能提高运算效率
    • 除了下述10个复合运算符之外,生造别的复合运算符是非法的

// 加减乘除:

a += n;(cpu运行效率高) // 等价于 a = a+n;//cpu运行效率低

a -= n; // 等价于 a = a-n;

a *= n; // 等价于 a = a*n;

a /= n; // 等价于 a = a/n;

// 求余:

a %= n; // 等价于 a = a%n;

// 位运算:

a &= n; // 等价于 a = a&n;

a |= n; // 等价于 a = a|n;

a ^= n; // 等价于 a = a^n;

a >>= n; // 等价于 a = a>>n;

a <<= n; // 等价于 a = a<<n;

逗号运算符(优先级最低),双目运算符  int a = 1,2;// 2 从左向右运算

逗号最后运行的称为逗号表达式

例如 :a = 2,b = 1

7. 条件运算符  (三目运算符)   a>b?m:n

  • 唯一需要三个操作数的运算符
  • 语法:表达式1 ? 表达式2 : 表达式3
  • 释义:当表达式1为真时,取表达式2,否则取表达式3
  • 举例:

int a = 100;

int b = 200;

int m = (a>b) ? a : b;  // 如果 a>b 为真,则 m 取 a 的值,否则取 b 的值

8. sizeof 运算符

  • 含义:计算指定数据类型或者变量所占据内存的字节数
  • 语法:sizeof(类型) 、sizeof(变量) ,计算变量的字节数时圆括号可以省略
  • 举例:

printf("%d\n", sizeof(int));

printf("%d\n", sizeof(long double));

int a[5];

printf("%d\n", sizeof(a));

printf("%d\n", sizeof a);

9. return运算符

  • 含义:退出某个函数(如果退出的是主函数main,那么整个程序也就退出了)
  • 语法:必须出现在函数体内,可以带函数对应类型的数据
  • 举例:

int main()

{

    return 0;

}

10. 优先级与结合性

  • 当表达式中出现不同的运算符时,根据优先级来决定谁先执行,比如先乘除,后加减
  • 当表达式中出现多个相同优先级的运算符时,根据结合性来决定谁先运行,比如从左到右
优先级排名
优先级排名运算符及其含义结合性
高优先级1[ ] ( ) .-> 后缀++后缀 --从左向右
2前缀++ 前缀-- sizeof & ^ + - ~ !从右向左
3强制类型转换从右向左
4* / (算术乘除) %从左向右
5+ - (算术加减)从左向右
6<<  >> (位移位)从左向右
7<  <=  >  >=从左向右
8==  !=从左向右
9&(位逻辑与)从左向右
低优先级10^ (位逻辑异或)从左向右
11| (位逻辑或)从左向右
12&&从左向右
13||从左向右
14? :从右向左
15

=  ^=  /=  %= +=  -= 

<<=  >>=  &=  ^=  |=

从右向左
16,从左向右
优先级与结合级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值