news 2026/7/12 16:33:09

五、操作符(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/7/11 14:23:11

47、Unix系统文件管理与安全指南

Unix系统文件管理与安全指南 1. Unix文件所有权与隐私问题 在Unix系统中,文件权限对于控制文件和目录的读写执行访问至关重要。通过谨慎选择文件权限,用户可以控制谁能够访问自己的文件。 umask命令 :这是访问控制的重要工具,它限制了后续创建的所有文件的权限。通常,用…

作者头像 李华
网站建设 2026/7/12 3:29:00

AI驱动SEO变革:智能优化如何提升搜索可见性与本地流量

在当下的数字化潮流里&#xff0c;搜索引擎优化也就是SEO策略&#xff0c;正历经一场借助人工智能技术推动的深刻蜕变。以往那依赖人工经验的优化办法&#xff0c;由于其效率方面的瓶颈以及策略同质化这一问题&#xff0c;正渐渐被更具智能性、更成体系的AI搜索优化方案给替代。…

作者头像 李华
网站建设 2026/7/11 6:00:54

JAVA打造国际悬赏平台:高效匹配,全球接单

JAVA打造国际悬赏平台&#xff1a;高效匹配与全球接单的技术实现路径一、技术架构&#xff1a;高并发与多端协同的基石后端性能引擎采用 Spring Boot 2.7 MyBatis-Plus 组合&#xff0c;内嵌Tomcat支持每秒10,000并发请求&#xff0c;任务状态同步延迟低于200ms。通过 动态分库…

作者头像 李华
网站建设 2026/7/11 23:01:33

【JavaWeb】HttpServletResponse_设置响应信息相关API

目录设置响应行相关的API设置响应头相关的API设置响应体内容API向客户端响应文件设置响应行相关的API 设置响应头相关的API 由于ContentType和ContentLength比较重要&#xff0c;除了这种设置方式&#xff0c;还提供了单独的api进行设置 设置响应体内容API 获得一个向响应体中…

作者头像 李华
网站建设 2026/7/10 16:26:49

论AI时代下 “马扁” 子的趋势分析(二)

书接上回&#xff0c;000号真不愧为我司段子手 提出&#xff1a; 先给客户洗脑&#xff0c;再给客户洗澡。我当场真想送000号两记 “大悲手”只见000号&#xff0c;挂起老式耳机&#xff0c;两耳一塞&#xff08;谁都不爱&#xff09;&#xff0c;实际上&#xff0c;开始 马扁…

作者头像 李华
网站建设 2026/7/12 6:42:46

MySQL 存储过程与函数:核心辨析与应用指南

一、 存储过程&#xff08;Stored Procedure&#xff09;存储过程是一组预编译并存储在数据库中的 SQL 语句集合&#xff0c;可视为在数据库端封装的可重复调用业务逻辑单元。它侧重于执行一系列操作&#xff0c;不一定返回结果值。示例&#xff1a;创建并调用存储过程sqlDELIM…

作者头像 李华