news 2026/10/3 11:24:38

C语言运算符笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言运算符笔记

赋值运算符

将不满意的值赋值为自己满意的值,赋值运算符可以连续使用(链式赋值)。
示例:
int a=10;
int x=0;
int y=20;
a = x = y + 1; // 链式赋值
复合赋值符

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

单目/双目运算符

• 单目运算符:只有1个操作数

• 双目运算符:有2个操作数

常见单目运算符

1. !:逻辑反操作(真→假,假→真)
示例:
int main()
{
int flag = 3; // 0为假,非0为真
if (flag) // flag为真,进入if
{}
if (!flag) // flag为假,进入if
{}
}
2. -:负值

3. +:正值

4. &:取地址(int *p = &a; // p是指针变量)

5. sizeof:操作数的类型长度(以字节为单位)
示例:
int main()
{
int a = 10;
int n = sizeof(a); // 计算变量a所占内存大小,单位为字节
int n = sizeof(int); // 计算int类型所占内存大小
// sizeof是运算符,计算变量/类型创建的变量所占内存空间大小
printf("n = %d\n", n);
return 0;
}
位运算符

按位与 &

规则:对应二进制位都为1则为1,否则为0。
示例:
int main()
{
int a = 3; // 整数占4字节,1字节=8比特位
int b = -5;
int c = a & b;
// 3的补码:00000000 00000000 00000000 00000011
// -5的补码:11111111 11111111 11111111 11111011
// 按位与结果:00000000 00000000 00000000 00000011 → 十进制3
printf("c = %d\n", c); // 输出c=3
return 0;
}
按位异或 ^

规则:对应二进制位相同为0,相异为1。
特性:

• 3^3=0 → a^a=0

• 0^5=5 → 0^a=a

• 3^3^5=5、3^5^3=5(异或满足交换律)

异或交换变量示例:
int main()
{
int a = 3;
int b = 5;
printf("交换前:a=%d b=%d\n", a, b);
a = a ^ b; // a=3^5
b = a ^ b; // b=3^5^5 → b=3
a = a ^ b; // a=3^5^3 → a=5
printf("交换后:a=%d b=%d\n", a, b);
return 0;
}
移位运算符

1. 左移 <<:左边丢弃,右边补0。
示例:

◦ a=7,b=a<<1 → 二进制左移1位,结果为14(7*2=14)

◦ a=-7,b=a<<1 → 补码左移1位,结果为-14

2. 右移 >>:

◦ 算术移位:右边丢弃,左边补原符号位

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

◦ 注意:移位运算符不要移动负数位

按位或 |

规则:对应二进制位有一个为1则为1,否则为0。

运算符分类

1. 算术运算符:+、-、*、/、%

◦ /:整型除法取整(1/2→0),浮点型除法保留小数(1.0/2→0.5)

◦ %:取模运算符两端必须是整数

2. 移位运算符:移动的是二进制位(不支持浮点数)

◦ 左移 <<

◦ 右移 >>

3. 位运算符:&(按位与)、|(按位或)、^(按位异或)

整数的二进制表示

整数的二进制有三种形式:原码、反码、补码,正数的原码、反码、补码相同,负数需要计算:

1. 原码:直接写出二进制,最高位为符号位(0正1负)

2. 反码:原码符号位不变,其他位按位取反

3. 补码:反码加1

4. 整数在内存中存储的是补码

示例(以-7为例,32位整型):

• 原码:10000000 00000000 00000000 00000111

• 反码:11111111 11111111 11111111 11111000

• 补码:11111111 11111111 11111111 11111001

内存大小说明

• 整型占4个字节,1字节=8比特位,4字节=32比特位

• 正数最高位为0,负数最高位为1

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

Realme Narzo 90系列印度发布:配备7000mAh电池与50MP摄像头,售价公布

Realme Narzo 90系列印度发布&#xff1a;配备7000mAh电池与50MP摄像头&#xff0c;售价公布 Realme扩充中端产品线 Realme在印度发布了Narzo 90系列&#xff0c;通过Realme Narzo 90 5G和Narzo 90x 5G扩充其中端智能手机阵容。两款机型均配备7000mAh大电池&#xff0c;支持60W…

作者头像 李华
网站建设 2026/10/3 3:22:49

硬核优化5连击,性能暴涨300%!附开箱即用模板,小白也能秒上手!

文为CUDA并行规约系列文章的下篇&#xff0c;本文介绍了5种并行规约算法的实现&#xff0c;并从硬件的角度对它们进行分析和优化&#xff0c;最终给出一个开箱即用的模板代码及其使用示例。勘误首先是一个勘误&#xff0c;在上篇中存在一个拼写错误&#xff0c;线程束的正确单词…

作者头像 李华
网站建设 2026/10/2 23:44:10

GitLab讲解

目录一、GitLab概念二、GitLab安装三、GitLab汉化四、Gitlab使用1、登录基本操作2、使用方法一、GitLab概念 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项…

作者头像 李华
网站建设 2026/10/3 10:10:43

Comsol超构表面动量空间参数图绘制指南

Comsol 超构表面动量空间参数图绘制在超构表面研究领域&#xff0c;绘制动量空间参数图对于理解超构表面的光学特性至关重要。Comsol作为一款强大的多物理场仿真软件&#xff0c;为我们提供了实现这一目标的有效途径。今天就来聊聊如何在Comsol里绘制超构表面动量空间参数图。…

作者头像 李华
网站建设 2026/10/3 22:26:43

Linux线程控制

一、互斥&#xff1a;临界资源的排他性访问1. 核心概念互斥&#xff0c;即对临界资源的排他性访问&#xff0c;是多线程安全的基础。临界资源&#xff1a;多线程环境下&#xff0c;会被多个线程同时读写的资源&#xff0c;比如全局变量、文件句柄、硬件设备等。这类资源的读写操…

作者头像 李华
网站建设 2026/10/3 20:37:15

永磁同步电机MotorCAD仿真详细流程揭秘

某永磁同步电机motorcad仿真流程,很详细 录制video文档最近在研究永磁同步电机的相关内容&#xff0c;发现MotorCAD这个软件在永磁同步电机仿真方面真的非常强大。今天就来给大家分享一下永磁同步电机MotorCAD的详细仿真流程&#xff0c;同时我还录制了配套的video&#xff0c;…

作者头像 李华