C语言操作符详解

C语言是一种广泛使用的编程语言,具有丰富的操作符集合。在这篇博客中,小编将详细介绍C语言中的各种操作符,帮助大家更好地理解和掌握这门语言。

1.操作符的分类

  • 算术操作符:+  -   *  /  %
  • 移位操作符:<<  >>
  • 位操作符:&  |  ^
  • 赋值操作符:=     +=   -=     *=     /=    %=    <<=     >>=     &=     |=     ^=
  • 单目操作符:!  ++     --     &     *     +      -      ~        sizeof    (类型)‘
  • 关系操作符:>     >=     <     <=     ==     !=
  • 逻辑操作符:&&   ||
  • 条件操作符:? :
  • 逗号表达式:,
  • 下标引用:[ ]
  • 函数调用:( )

2.原码、反码、补码

        原码、反码和补码是计算机中表示和存储整数的三种不同的编码方式,主要用于二进制数的表示。下面分别介绍这三种编码方式:
1. **原码**:原码是最直观的二进制表示方式,其中最高位表示符号位(0表示正数,1表示负数),其余位表示该数的绝对值。例如,+1的原码是 `0000 0001`,-1的原码是 `1000 0001`。
2. **反码**:反码用来简化正负数的加减运算。对于正数,其反码与原码相同;对于负数,其反码是将原码中除了符号位外的所有位取反(0变1,1变0)。例如,+1的反码是 `0000 0001`,-1的反码是 `1111 1110`。
3. **补码**:补码也是为了简化计算机中的加减运算而设计的。正数的补码与其原码相同;负数的  补码是其反码加1。例如,+1的补码是 `0000 0001`,-1的补码是 `1111 1111`(首先得到-1的反码 `1111 1110`,然后加1得到 `1111 1111`)。
        补码的引入主要有两个原因:一是使得加法和减法可以统一处理,简化了计算机内部的硬件实现;二是能够减少存储空间,因为正数和负数使用相同的表示方式,从而节省位数。
在现代计算机系统中,补码是最常用的表示方式,特别是在无符号整数和有符号整数的表示中。例如,一个4字节的整数通常使用32位补码表示。

3.移位操作符

<<  左移操作符

移位规则:左边抛弃、右边补0

>>  右移操作符

移位规则:⾸先右移运算分两种:

1.逻辑右移:左边⽤0填充,右边丢弃


2.算术右移:左边⽤原该值的符号位填充,右边丢弃


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

4.位操作符:&、|、^、~

位操作符有:
1. 按位与(&):将两个操作数的每一位进行逻辑与操作。如果两个操作数的相应位都是1,则结果的相应位为1,否则为0。
2. 按位或(|):将两个操作数的每一位进行逻辑或操作。如果两个操作数的相应位中至少有一个是1,则结果的相应位为1,否则为0。
3. 按位异或(^):将两个操作数的每一位进行逻辑异或操作。如果两个操作数的相应位相同(都是0或都是1),则结果的相应位为0;如果不同(一个是0,另一个是1),则结果的相应位为1。
4. 按位非(~):反转操作数的每一位,即0变成1,1变成0。
       位操作在计算机科学中非常重要,因为它们直接对应于计算机硬件中的电信号。例如,位操作可以用于设置或清除寄存器中的特定位,这对于控制硬件设备或处理数据非常有用。此外,位操作还可以用于加密、错误检测和校正、以及低级的数据处理任务。

5.单目操作符

单目操作符(Unary operators)是只作用于一个操作数的运算符。它们通常用于对操作数进行某种类型的转换或操作。以下是一些常见的单目操作符及其用途:
1. 增量操作符(++):
   - `++a` 或 `a++`:前置增量操作符或后置增量操作符,将变量的值增加1。
2. 减量操作符(--):
   - `--a` 或 `a--`:前置减量操作符或后置减量操作符,将变量的值减少1。
3. 正号(+):
   - `+a`:正号操作符通常用于显示地转换一个数的符号。在某些情况下,如果数字前没有正号或负号,则默认为正。
4. 负号(-):
   - `-a`:负号操作符用于转换一个数的符号,即将正数转换为负数,负数转换为正数。
5. 一元减号(-):
   - `-a`:在某些编程语言中,这个操作符可以用于取一个数的相反数。
6. 类型转换操作符:
   - `int a = (int)b;`:将变量`b`转换为整数类型。
   - `float a = (float)b;`:将变量`b`转换为浮点数类型。
   - `char a = (char)b;`:将变量`b`转换为字符类型。
7. 逻辑非(!):
   - `!a`:逻辑非操作符用于取一个布尔值的相反数。如果`a`是`true`,则`!a`是`false`;如果`a`是`false`,则`!a`是`true`。
8. 解引用操作符(&):
   - `&a`:在C和C++等语言中,解引用操作符用于获取指向变量`a`的指针的值。
9. 取址操作符(&):
   - 在C和C++中,取址操作符`&`也用于获取一个变量的内存地址。
10. 取值操作符(*):
    - `*a`:在C和C++等语言中,取值操作符用于获取指针指向的值。
11. sizeof操作符(sizeof):
    - `sizeof a`:返回变量`a`或类型`T`的大小(以字节为单位)。

单目操作符在编程中非常常见,它们可以用于基本的数据操作、类型转换、条件判断等方面。

6.逗号表达式

逗号表达式(Comma Expression)是一种在某些编程语言中存在的特殊表达式,它的作用是将多个表达式连接起来。在逗号表达式中,各个表达式之间用逗号分隔。它的值是最后一个表达式的值。
以下是一个简单的逗号表达式的例子:

在这个例子中,逗号表达式包含三个表达式:
1. `x = 5`:将变量`x`的值设置为5。
2. `y = 10`:将变量`y`的值设置为10。
3. `x + y`:计算变量`x`和`y`的和。
逗号表达式的结果是最后一个表达式的结果,即`x + y`的值。在这个例子中,`result`的值将是15,因为逗号表达式的结果是最后一个表达式的结果。
需要注意的是,逗号表达式在不同的编程语言中有不同的用途和含义。在某些语言中,逗号表达式可能会导致编译错误或运行时错误。例如,在C语言中,逗号表达式是有效的,但在Java中,它通常不被允许作为语句分隔符。

  • 74
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值