C语言操作符总结


要学懂操作符,首先我们要知道什么是操作符。“操作符”是嵌在每一条指令中的,也就是说指令系统的每一条指令都有一个操作符。

首先操作符分为以下10个大类:

算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用,函数调用和结构成员

现在详细介绍每一种操作符:

1.算术操作符

符号: + - * / %
+:分别用于整数和浮点数的加法。
-: 分别用于整数和浮点数的减法
*: 分别用于整数和浮点数的乘法
/: 分别用于整数和浮点数的除法
%:用于两个整数之间相除取余数

符号 + - * / 运算优先级符合数学中的运算优先级。

例:int i = 1 + 2 * 3
结果 i = 7

注意:
1.除了%操作符之外,其他的几个操作符都可以用于整数和浮点数。
2.对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须为整数。返回的是整除之后的余数。

2.移位操作符

符号:<< 和 >>

说明:
<< 左移操作符:不论算术移位还是逻辑移位,均将左边的数舍弃,右边空缺位补0(左边丢弃,右边补0)
>> 右移操作符:1.当进行逻辑移位时,最左侧无脑补0
2.当进行算术移位时,右边位丢弃,左边位补原数的符号位(右边丢弃,左边补符号位)。

在这里插入图片描述

3.位操作符

符号:& | ^ ~

符号说明:& 按位与(如果两个数字都为1,结果为1,否则位0)
| 按位或(如果两个数字都为0,结果为0,否则为1)
^ 按位异或(如果两个数字相同,结果为0,否则为1)
~按位取反(针对这个数字,0变为1,1变为0)
举例说明:
按位与&
int a = 3
int b = 4
int c = a & b
在32位操作系统中,3的二进制表示为: 0000 0000 0000 0000 0000 0000 0000 0011
4的二进制表示为:0000 0000 0000 0000 0000 0000 0000 0100
按照按位与的操作规则,则c就为:0000 0000 0000 0000 0000 0000 0000 0000
按位或|
int a = 3
int b = 4
int c = a | b
在32位操作系统中,3的二进制表示为: 0000 0000 0000 0000 0000 0000 0000 0011
4的二进制表示为:0000 0000 0000 0000 0000 0000 0000 0100
按照按位与的操作规则,则c就为:0000 0000 0000 0000 0000 0000 0000 0111
按位异或^
int a = 3
int b = 4
int c = a ^ b
在32位操作系统中,3的二进制表示为: 0000 0000 0000 0000 0000 0000 0000 0011
4的二进制表示为:0000 0000 0000 0000 0000 0000 0000 0100
按照按位与的操作规则,则c就为: 0000 0000 0000 0000 0000 0000 0000 0111
按位取反~
int a = 3
int c = ~a
在32位操作系统中,3的二进制表示为: 0000 0000 0000 0000 0000 0000 0000 0011
按照按位与的操作规则,则c就为: 1111 1111 1111 1111 1111 1111 1111 1100

4.赋值操作符

符号:= += -= *= /= %= >>= <<= &= |= ^=

符号说明:
= 为简单赋值操作
+= -= *= /= %= >>= <<= &= |= ^= 为复合赋值操作

例如:

//简单赋值操作
int i = 20;
i = i + 23
double j = 3.0;
j = 3.5;
//连续赋值操作
int i = 2;
int j = 3;
int k = 4;
k = j = i + 5;//先将i + 5 赋值给j,再将j赋值给k

+= -= *= /= %= >>= <<= &= |= ^=复合赋值操作

//复合复制操作
int i = 20;
i = i + 23 与 i += 23 完全等效
int j = 2;
j = j - 2 与 j -= 2 完全等效

5.单目操作符

符号: ! - + & sizeof ~ - - ++ * (类型)

符号说明:

  !    为逻辑反操作

  -   为负值

  +   为正值

  &   为取地址

sizeof  为操作数的类型长度(单位:字节)

  ~    为对一个数的二进制按位取反

 --    为前置、后置--

++    为前置、后置++

*       为解引用操作符

 (类型)    为强制类型转换

6.关系操作符

符号:· > < >= <= != ==

符号说明:

>     为大于

 <     为小于

>=    为大于等于

<=     为小于等于

!=     为不等于

7.逻辑操作符

符号: && ||

符号说明:

&& 为逻辑与操作(只要有一个表达式为假便为假,不再执行后面的表达式)

|| 为逻辑或操作(只要有一个表达式为真便为真,不再执行后面的表达式)

举例说明:

1 && 2 = 1//逻辑与,只要有一个为假便为假
1 & 2 = 0//按位与(二进制位)

1 || 2 = 1//逻辑或,只要有一个为真便为真
1 | 2 = 3//按位或(二进制位)

8.条件操作符

符号:exp1 ? exp2 : exp3

符号说明:

exp1 ? exp2 : exp3 为目表达式,若表达式1(exp1)为真则返回表达式2(exp2),否则返回表达式3(exp3)

例:

int i = 5, j = 7;
i > j ? i : j;
//如果i > j为真, 就返回 i 的值,如果i > j为假,就返回 j 的值。 

9.逗号表达式

符号:exp1, exp2, exp3, …, expN

符号说明:

exp1, exp2, exp3, …, expN 为逗号表达式(用逗号隔开的表达式),从左往右依次执行。整个表达式的结果为最后一个表达式的结果。

例:

int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
//c就为最后一个表达式的结果,也就是b = a + 1的结果就是2

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

下标引用

符号:[ ]

符号说明:

[ ] 为下标引用操作符,有两个操作数(数组名和索引值)
例:

int arr[10];
arr[9] = 10;
[]的两个操作数是arr和9.

函数调用

符号:()

符号说明:

() 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,生育的操作数就是传递给函数的参数。

#include <stdio.h>
void test1(){
    printf("hehe\n");
}
void test2(const char* str){
    printf("%s\n", str);
}
int main(){
    test1();
    test2("hello bit.");
    return 0;
}

结构成员

符号: . ->

符号说明:

. 为结构体对象.成员名

-> 为结构体指针->成员名

例:

#include <stdio.h>
struct Stu{
    char name[10];
    int age;
    char sex[5];
    double score;
};
void set_age1(struct Stu stu){
    stu.age = 18;
}
void set_age2(struct Stu* pStu){
    pStu -> age = 18;
}
int main(){
    struct Stu stu;
    struct Stu* pStu = &stu;
    stu.age = 20;
    set_age1(stu);
    pStu -> age = 20;
    set_age2(pStu);
    return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值