当前位置: 首页 > ds >正文

赋值运算符指南

目录

一、基本赋值运算符(=)

初始化与赋值的区别

连续赋值(链式赋值)

二、复合赋值运算符

基本复合赋值运算符

位运算复合赋值运算符(后期讲解)

三、注意事项

良好实践示例:


一、基本赋值运算符(=)

初始化与赋值的区别

  • 在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
  • 赋值操作符 = 是⼀个随时可以给变量赋值的操作符。
int a = 100;  // 初始化:创建变量时赋予初始值
a = 200;      // 赋值:变量创建后修改其值

连续赋值(链式赋值)

C语言支持连续赋值,但可读性较差:

int a = 3, b = 5, c = 0;
c = b = a + 3;  // 从右向左依次赋值:a+3→b→c

推荐写法(更易调试和理解):

int a = 3, b = 5, c = 0;
b = a + 3;  // 步骤清晰
c = b;       // 便于调试观察

二、复合赋值运算符

基本复合赋值运算符

运算符等价形式说明
+=a = a + x加法赋值
-=a = a - x减法赋值
*=a = a * x乘法赋值
/=a = a / x除法赋值
%=a = a % x取模赋值

使用示例

int a = 10;
a += 3;  // 等价于 a = a + 3 → a=13
a -= 2;  // 等价于 a = a - 2 → a=11
a *= 4;  // 等价于 a = a * 4 → a=44
a /= 5;   // 等价于 a = a / 5 → a=8
a %= 3;   // 等价于 a = a % 3 → a=2

位运算复合赋值运算符(后期讲解)

>>=  // 右移赋值
<<=  // 左移赋值
&=   // 按位与赋值
|=   // 按位或赋值
^=   // 按位异或赋值

三、注意事项

  1. 执行顺序:复合赋值运算符先计算右边表达式(把右边表达式看做一个整体),再与左边变量运算

  2. 类型转换:右边表达式结果会自动转换为左边变量的类型

  3. 效率优势:复合形式通常比展开形式效率更高

  4. 可读性:简单运算推荐使用复合形式,复杂表达式建议拆分

  5. 副作用:避免在复杂表达式中过度使用复合赋值

良好实践示例

// 清晰但效率较低的写法
array[index] = array[index] * 2 + 1;// 推荐使用复合赋值运算符
array[index] *= 2;
array[index] += 1;
http://www.xdnf.cn/news/17676.html

相关文章:

  • 代码可读性与维护性的实践与原则
  • word中,添加新的参考文献后,其他参考文献的交叉引用不能及时更新的解决办法
  • 《Webpack与Vite热模块替换机制深度剖析与策略抉择》
  • 二维前缀和问题
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 MySQL 服务器
  • 电脑本地摄像头做成rtsp流调用测试windows系统中
  • 【大智慧数据】心智开花的时候
  • AI测试助手如何让Bug无处可藏
  • Dify 从入门到精通(第 26/100 篇):Dify 的知识图谱集成
  • 2025最新免费的大模型和免费的大模型API有哪些?(202508更新)
  • 2025年6月电子学会全国青少年软件编程等级考试(Python二级)真题及答案
  • 【Linux指南】Vim的全面解析与深度应用
  • C语言第八章指针四
  • 【接口自动化】初识pytest,一文讲解pytest的安装,识别规则以及配置文件的使用
  • Jotai:React轻量级状态管理新选择
  • Code Exercising Day 10 of “Code Ideas Record“:StackQueue part02
  • SQL三剑客:DELETE、TRUNCATE、DROP全解析
  • CentOS7.9 离线安装mysql数据库
  • CPP继承
  • Windows执行kubectl提示拒绝访问【Windows安装k8s】
  • `sk_buff` 结构体详解(包含全生命周期解析)
  • 数学建模:控制预测类问题
  • 全面了解机器语言之kmeans
  • 010601抓包工具及证书安装-基础入门-网络安全
  • 【Matplotlib】中文显示问题
  • 企业级WEB应用服务器TOMCAT — WEB技术详细部署
  • 正点原子esp32s3探测土壤湿度
  • openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线
  • Effective C++ 条款34:区分接口继承和实现继承
  • 数据库面试题集