C语言操作符详解(上)

简介: 笔记

操作符分类:


算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员


算术操作符


+      -      *      /      %


1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。

2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。

1.png

移位操作符


<< 左移操作符

>> 右移操作符

 

注:移位操作符的操作数只能是整数。


原码

计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数 该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。


反码

正数的反码是它本身,负数的反码是符号位不变,其它位取反


补码

整数的补码是它本身,负数的补码是反码+1,整数是以补码的形式进行存储的


左移操作符

2.png3.png

此时a的数值并未发生变化。而是把操作完的数字赋值给了b


用负数进行左移

4.png5.png

总结:左移操作符,左边丢弃,右边补0


右移操作符


6.png7.png

对a右移一位之后,我们发现此时符号位的位置空缺了一位,此时应该补0或者1

算数位移:左边丢弃,右边补原符号位

逻辑位移:左边丢弃,右边补0

8.png

我们用负数测试后,发现vs2019用的是算术位移, 因为逻辑位移只补0,补0之后就是正数了,大多数编译器用的都是算术位移,

错误写法

9.png

位操作符


&//按位与

|//按位或

^//按位异或

注:他们的操作数必须是整数。

10.png11.png12.png13.png

负数运算也是如此,按位与&:有0则结果为0


                                按位或| :有1则结果为


                                 按位异或^:不同则为1


运算法则:补码相运算,然后把补码根据原码反码补码的关系,转为原码,则最终得到的数字就是原码所代表的数字,只不过是以补码的形式进行存储


不能创建临时变量(第三个变量),实现两个数的交换

14.png

#include<stdio.h>
int main()
{
  int a = 3;
  int b = 5;
    printf("交换前:%d %d", a, b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf("交换后:%d %d", a, b);
  return 0;
}

15.png

#include<stdio.h>
int main()
{
  int a = 3;
  int b = 5;
    printf("交换前:%d %d", a, b);
    a = a ^ b;
    b = a ^b;
    a = a ^b;
    printf("交换后:%d %d", a, b);
  return 0;
}
#include<stdio.h>
int main()
{
  int a = 3;
  int b = 5;
    a = 3^ 3;
    b = 3 ^0;
    printf("%d %d", a, b);
  return 0;
}

任何数和0异或都为任何数,任何数和它本身异或都为0  16.png

异或支持交换律

相关文章
|
6天前
|
C语言
C语言之操作符1
C语言之操作符1
22 0
|
6天前
|
编译器 C语言
操作符详解(C语言基础深入解析)
操作符详解(C语言基础深入解析)
|
6天前
|
存储 编译器 C语言
爱上C语言:操作符详解(下)
爱上C语言:操作符详解(下)
|
6天前
|
算法 测试技术 C语言
【C语言】异或(^)操作符
【C语言】异或(^)操作符
18 0
|
6天前
|
存储 算法 编译器
【c 语言 】移位操作符详解
【c 语言 】移位操作符详解
46 0
|
6天前
|
存储 算法 程序员
【c 语言 】位操作符详解
【c 语言 】位操作符详解
59 0
|
6天前
|
存储 编译器 Linux
操作符详解【c语言】
操作符详解【c语言】
|
6天前
|
C语言
【C语言】位操作符详解
【C语言】位操作符详解
29 0
|
6天前
|
存储 编译器 程序员
c语言从入门到实战——操作符详解
C语言操作符指的是程序中用来进行各种计算、逻辑和条件操作的符号或符号组合。 操作符是编程中用于执行特定操作或比较数据的符号。它们根据操作类型分为算术、比较、逻辑和位操作符。算术操作符执行加、减、乘、除等数学运算;比较操作符比较两个值的大小或相等性;逻辑操作符连接多个条件,形成更复杂的逻辑判断;位操作符则直接对整数的二进制位进行操作。了解各种操作符的特性和用法,对于编写高效、准确的代码至关重要。
56 0
|
6天前
|
存储 编译器 程序员
C语言第十六弹---操作符(下)
C语言第十六弹---操作符(下)