news 2026/6/15 19:14:31

五、操作符(C语言)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
五、操作符(C语言)

1、算数操作符

(1)加+

(2)减-

(3)乘*

(4)除/

A 整数的除法

7/2

B 浮点型的除法

7.0/2 7/2.0 7.0/2.0

(5)取模%

int a = 7 % 2; //输出1 //%的前后必须为整数

2、移位操作符

移位操作符的操作数只能是整数。移位的是二进制数。

整数的二进制有三种:源码、补码、反码。正的整数原码、补码、反码相同;负的整数原码、补码、反码要计算。整数在内存中存储的是补码。

//7 //00000000000000000000000000000111-原码 //00000000000000000000000000000111-反码 //00000000000000000000000000000111-补码 //-7 //10000000000000000000000000000111-源码 //11111111111111111111111111111000-反码 //11111111111111111111111111111001-补码(反码+1)

(1)左移位操作符<<

正数左移

int main() { int a = 7; int b = a << 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //14 return 0; }

负数左移

int main() { int a = -7; int b = a << 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //-14 return 0; }

(2)右移位操作符>>

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

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

正数右移

int main() { int a = 7; int b = a >> 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //3 return 0; }

负数右移(VS编译器使用算数右移)

int main() { int a = -7; int b = a >> 1; printf("a=%d\n", a); //-7 printf("b=%d\n", b); //-4 return 0; }

3、位操作符

(1)按位与&

整数的二进制数各位上两者都是1的,按位与后的补码也是1,其他是0

int main() { int a = 3; int b = -5; int c = a & b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //00000000000000000000000000000011 printf("c=%d\n", c); //3 return 0; }

(2)按位或|

整数的二进制数各位上只要出现1的,按位或后的补码是1,其他是0

int main() { int a = 3; int b = -5; int c = a | b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //11111111111111111111111111111011 printf("c=%d\n", c); //-5 return 0; }

(3)按位异或^

整数的二进制数各位上,相同的是0,不同的是1

int main() { int a = 3; int b = -5; int c = a ^ b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //11111111111111111111111111111000 printf("c=%d\n", c); //-8 return 0; }

(4)位操作符的应用

不使用临时变量,实现两个整数的交换。

方法一:使用按位与、按位或。

int main() { int a = 3; int b = -5; printf("c1=%d\n", a & b); //3 printf("c2=%d\n", a | b); //-5 return 0; }

方法二:使用按位异或

int main() { int a = 3; int b = 5; a = a ^ b; //a=3^5 b = a ^ b; //b=3^5^5 —> b=3 a = a ^ b; //a=3^5^3 —> a=5 return 0; }

4、赋值操作符

=、+=、-=、&=、|=、^=、>>=、<<=

int main() { int a = 0;//初始化 int b = 0; b = 20;//赋值 a = a + 5; a += 5; a = a >> 1; a >>= 1; a = a - 1; a -= 1; return 0; }

5、单目操作符

(1)逻辑反操作 !

int main() { int flag = 3; if (!flag) printf("hehe\n"); else printf("xixi\n"); //输出xixi return 0; }

(2)负值 -

int a = -1;

(3)正值 +

int a = +1;

(4)取地址 &

int a = 3; int* p = &a;

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

int a = 10; int n = sizeof(a);

(6)对一个数的二进制位取反 ~

int a = 0; printf("*d\n", ~a); //输出-1

(7)前置、后置 --

(8)前置、后置 ++

int main() { int a = 3; int b = ++a;//前置++,先++,后使用 printf("%d\n", a);//输出4 printf("%d\n", b);//输出4 }
int main() { int a = 3; int b = a++;//后置++,先使用,后++ printf("%d\n", a);//输出4 printf("%d\n", b);//输出3 }

(9)间接访问操作符(解引用操作符) *

int a = 10; int* p = &a; *p = 20;

(10)强制类型转换 (类型)

int a = (int) 3.14;
srand((unsigned int)time(NULL)); //time()函数的返回值类型为time_t

6、关系操作符

>、>=、<、<=、!=、==

7、逻辑操作符

(1)逻辑与 &&

两个条件都要满足才为真。

(2)逻辑或 ||

两个条件满足一个就为真。

int main() { int a = 3; int b = 0; int c = a && b; //并且 int l = a || b; //或者 printf("c=%d\n", c); //输出0 printf("l=%d\n", l); //输出1 return 0; }

8、条件操作符

if (a > 5) b = 3; else b = -3; (a > 5) ? (b = 3) : (b = -3);

9、逗号表达式

int a = 1; int b = 2; int c = (a > b, a = b + 10, a, b = a + 1); printf("%d\n", c); //输出13

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 6:26:01

Stata 18 多元统计 + 数据管理 让数据分析更专业安装教程

前言 Stata 18 该版本在历代版本基础上&#xff0c;聚焦因果推断、元分析、生存分析等核心研究领域&#xff0c;全面强化统计分析能力&#xff0c;同时优化数据管理、图表制作与结果报告等功能模块&#xff0c;广泛适用于经济学、医学、社会学等学科的实证研究工作。 版本亮点…

作者头像 李华
网站建设 2026/6/15 13:04:28

48、Unix 技术知识全解析:从基础命令到前沿概念

Unix 技术知识全解析:从基础命令到前沿概念 1. 重要 Unix 命令 在 Unix 系统中,存在众多用于进程管理和文件操作的重要命令,这些命令是系统操作的基础。 - 进程相关命令 :包括用于创建、删除或管理进程的命令,如 at 可在指定时间执行作业, batch 会在系统负载不…

作者头像 李华
网站建设 2026/6/13 8:56:05

别再乱选了!LLM应用实时通信技术SSE、WebSocket、WebRTC全方位对比

一、核心技术原理剖析 在为大型语言模型&#xff08;LLM&#xff09;应用构建实时前后端通信系统时&#xff0c;选择正确的底层技术至关重要。本章节将深入剖析三种主流技术的核心原理&#xff1a; Server-Sent Events (SSE)&#xff0c;它作为服务器主导的单向数据流的黄金标…

作者头像 李华
网站建设 2026/6/12 9:15:29

MySQL MOD()函数详解与Python对比

✅ 一、MySQL 的 MOD() 函数是怎么计算的&#xff1f;MOD(x, y) 是取余数的操作&#xff0c;即&#xff1a; &#x1f449; x % y&#xff08;在数学上就是 x 除以 y 的余数&#xff09;&#x1f50d; 示例解析&#xff1a;SELECT MOD(31, 8), MOD(234, 0), MOD(46.6, 6);表达式…

作者头像 李华
网站建设 2026/6/15 8:34:57

Spring Cloud Alibaba使用Seata解决分布式事务全过程解析

为什么会产生分布式事务?#随着业务的快速发展&#xff0c;网站系统往往由单体架构逐渐演变为分布式、微服务架构&#xff0c;而对于数据库则由单机数据库架构向分布式数据库架构转变。此时&#xff0c;我们会将一个大的应用系统拆分为多个可以独立部署的应用服务&#xff0c;需…

作者头像 李华