☰
操作符详解:C语言的手术刀
2026/10/28 10:24:33 网站建设 项目流程

1.操作符分类

算术操作符:+、-、*、/、%

移位操作符:<< >>

位操作符:& | ^`

赋值操作符:=、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=

单⽬操作符: !、++、--、&、*、+、-、~、sizeof、(类型)

关系操作符:>、>=、<、<=、==、!=

逻辑操作符:&&、||

条件操作符:? :

逗号表达式: , (逗号表达式,就是⽤逗号隔开的多个表达式)

下标引⽤: [] ( 下标引⽤操作符)

函数调⽤:()

结构成员访问:.、->

2.⼆进制和进制转换

其实我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进制、10进制、16进制是数值的不同表⽰形式⽽已,几进制就是逢几进一。

15的2进制:1111 15的8进制:17 15的10进制:15 15的16进制:F

3.原码、反码、补码

整数的2进制表示方法有三种,即原码、反码和补码

有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。

符号位都是用0表示“正”,⽤1表示“负”。

正整数的原、反、补码都相同。

负整数的三种表示方法各不相同。

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:反码+1就得到补码。

4.移位操作符

<< 左移操作符

>> 右移操作符

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

4.1左移操作符

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

4.2右移操作符

右移操作符分两种:

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

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

算术右移

逻辑右移

*5.位操作符:&、|、^、~(必须是整数)

& //按位与(全1才1,有0就0)
| //按位或(全0才0,有1就1)
^ //按位异或(相同为0,不同为1)
~ //按位取反(0->1,1->0)

*6.结构成员访问操作符

6.1结构体

C语言已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要名字、年龄、学号、身高、体重等;描述⼀本书需要作者、出版社、定价等。C语言为了解决这个问题,增加了结构体这种⾃定义的数据类型,让程序员可以自己创造适合的类型。
struct Stu { char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号 }; //分号不能丢

6.2结构成员访问操作符

1.结构体变量.成员名

#include <stdio.h> struct Point { int x; int y; }p = {1,2}; int main() { printf("x: %d y: %d\n", p.x, p.y); return 0; }

2.结构体指针->成员名

#include <stdio.h> struct Point { int x; int y; }; int main() { struct Point p = {3, 4}; struct Point *ptr = &p; ptr->x = 10; ptr->y = 20; printf("x = %d y = %d\n", ptr->x, ptr->y); return 0; }

7.优先级

参考:https://zh.cppreference.com/w/c/language/operator_precedence

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询