C语言——操作符详解

本文详细介绍了C/C++编程中的各种操作符,包括算数、移位、位、单目、关系、逻辑、条件和逗号操作符,以及它们的使用规则和注意事项。还特别提到了位操作符在整数操作中的应用,以及如何通过位异或实现无额外变量的数值交换。此外,还涵盖了下标引用、函数调用和结构成员的访问方式。理解这些操作符的用法对于提升C/C++编程技能至关重要。
摘要由CSDN通过智能技术生成

目录

算数操作符:

移位操作符:

位操作符:

单目操作符:

关系操作符:

逻辑操作符:

条件操作符:

逗号表达式:

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

注意事项:


算数操作符:

+ - * / %

%代表一个数除另一个数后的余数,比如3 % 1 = 0,1 % 3 = 1

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

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

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

 

移位操作符:

<< 左移操作符

移位规则:

左边抛弃、右边补0

>> 右移操作符

逻辑移位 左边用0填充,右边丢弃

算术移位 左边用原该值的符号位填充,右边丢弃

编译器的不同决定了在使用>>操作符采用了哪种移位方式,正数的符号位是0,负数是1。

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

位操作符:

&    按位与       对于两个数的每个二进制位,都是1的时候就是1,其他时候为0
|      按位或       对于两个数的每个二进制位,有一个是1就是1,
^    按位异或    对于两个数的每个二进制位,相异为1,相同为0

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

我们可以通过异或操作,实现两个数的交换

#include <stdio.h>
int main() {
    int a = 10;
    int b = 20;
    a = a^b;
    b = a^b;
    a = a^b;
    printf("a = %d  b = %d\n", a, b);
    return 0;
}

复合操作符:

+=     -=     *=     /=     %=     >>=     <<=     &=     |=     ^=

例如 x += 10 就相当于 x = x + 10    x ^= 1 相当于 x = x ^ 1

 

单目操作符:

! 逻辑反操作
-                 负值
+                正值
&                取地址
sizeof        操作数的类型长度(以字节为单位) ~ 对一个数的二进制按位取反

--               前置、后置--     (前置就是先++再使用,后置是先使用再++)
++              前置、后置++
*                 间接访问操作符(解引用操作符)

(类型)        强制类型转换

关系操作符:

>
>=
<
<=
!=       用于测试“不相等” 

==      用于测试“相等”

需要注意的是,当我们判断浮点数是否等于0时,需要使用下列方法

if(y > -0.0001 && y < 0.0001)

逻辑操作符:

&& 逻辑与   两个代码如果都是真,那么整体为真,否则为假

|| 逻辑或。   两个代码如果有一个是真那么整体就是真

条件操作符:

exp1 ? exp2 : exp3        当exp1为真时执行exp2,否则执行exp3

例如 3 > 5 ? x = 3 : 5,这个时候x = 5

逗号表达式:

exp1,exp2,exp3...     从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1);   最终c = 13

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

[ ] 下标引用操作符

操作数:一个数组名 + 一个索引值

arr[i + 3]就相当于*(arr + 3)

( ) 函数调用操作符

接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

访问一个结构的成员
.           结构体.成员名
->        结构体指针->成员名

 

注意事项:

各个操作符的优先顺序不同,在使用前,应该先上网查明操作符的优先性与结合性,并且尽量避免多个复杂操作符的使用,在不同的编译器下可能产生不同的结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值