《A++ 敏捷开发》- 18 软件需求
需求并不是关于需求 (Requirements are not really about requirements)
大家去公共图书馆寄存物品,以前都是扫二维码开箱,有些图书馆升级了使用指纹识别。
“是否新方法比以前好?”我问年轻的开发人员。
“当然用指纹识别好。新技术!现在已经很少看到使用条码的系统了。”
“如果取物时指纹识别失败怎么办?以前还有条码纸条作为凭证,找管理员人工开箱处理,但用指纹识别的话,就无法证明自己是寄存那个人,甚至连寄存在哪箱都可能忘记了。而且指纹识别的错误率比条码高,所以虽然是新科技,成本也提升了,但未必带来价值。”
每次培训,我都会用这例子提醒学员需求并非只谈需求,必须为拥有它的人提供最理想的价值。有些产品经理混淆了解决方案与需求本身:“寄存需要用指纹识别开箱”,
但如果把需求写成:“让寄存者取得凭证,之后用来开箱”
设计师就不一定选择用指纹识别,它只是其中一种方案。
如果希望IT系统给用户带来价值,就需要从整个业务全面分析,有些需要由IT系统支持,有些不需要。
下面会举例说明。
很多团队都未能做好以下3点:
- 需求分析
- 识别关键干系人
- 非功能性需求
需求分析
业务用例,包括产品用例,可以帮助我们分析整个业务流程,确保能为业务产生价值。
使用下面的模型,可以有效地按以下顺序系统地分析与设计业务用例(Business Use Case BUC) 、产品用例 (Product Use Case PUC)。
- 现在业务流程(Now,How)
- 现在业务用例(Now,What)
- 未来增强后的业务用例(Future,What)
- 未来的产品用例(Future,How)
例如:线上在超市购物,产品用例就包括处理买家的结账请求,连接信用卡数据,更新买家的购物历史和等待发货的订单信息。但业务用例就包括系统以外的其他配合工作,包括:超市员工在货架上按订单取货,联系物流公司把货品送到买家地址。
首先描述现在的处理方式(左下角)。
在左上角描述现在业务用例,柜台处理的方式,然后在右上角想象用了系统后,网上选购与下订单的未来业务用例,哪些流程应该在线上做更容易(右下角)。
“刚年底审查了我们某针对医院临床软件系统,发现整年开发的功能中,有86%都未被使用。”
我们从而了解到,把需求分优先级很重要,所以要制定开发什么功能,集中精力这些会被使用的20%功能,而不是浪费时间在开发完都没有用的80%功能。
有人提出,其实可以反过来看,怎么筛选哪些功能不应该做,可能更容易。
但应怎么筛选呢?
某家专门做高端安防系统的P公司,为一家大卖场S公司开发一款廉价的安防系统,如下:
请问你作为产品经理会如何反应? --==+++==-- “增加一个缺失的需求去检测损坏的窗口”很多学生会立马问(因为刚刚听完第一条的解读。):“客户为什么要做这个功能?” |
从以上例子看到产品经理不仅仅是传话,要利用业务的知识,了解和过滤需求,拒绝没有价值的需求。
需求人员过滤了不合理的需求后,还是要分析成本和给客户的价值,对价值比成本高的需求分优先级。
如果我们必须构建软件,那么它必须为拥有它的人提供最理想的价值。 |
以上面储物柜故事举例:
因为指纹识别成本高,但没有提供更多价值,所以不应该做。
用例与场景
用户故事针对“做什么”与“为什么”(“What”,“Why”); 场景针对“如何做”(“How”),例如普通市民用手机程序搜索下周一央视7台有什么节目。所以它们之间是互补,没有冲突。每个需求都应考虑各类场景,以银行个人用户用银行卡去ATM机取款为例:
正常情况:使用个人银行卡取300元
其他可选情况:从其他银行卡取款
异常情况:取款后没有及时取回银行卡,导致吞卡
正常场景是基础;但如果没有全面考虑各种场景便会导致最后开发出来的产品不满足客户需求。
实例:护照到期续证
比如我们护照更新,以前是要到柜台手工办理,如果我们把那个过程数字化,让市民可以在线做,不需要亲身到柜台办理。应怎样做呢?
某国家的做法是本来的手工填写模板直接变成系统页面(每个输入与手工表格一一对应),申请人在系统里按本来模板填写并提交,上传个人新照片,也是经过系统,我有一次尝试用系统线上填电子表单申请,但因表单很繁琐,有很多护照原有信息都需要重新填写,光是填那表就花了我接近一个小时,最大问题还不是在我花时间填手工表,而是最后要上传照片,因为照片像素高的话就很大,需要很好的网络才可以传得上,如果照片像素小,便导致模糊不清,不能通过。最后,一个半小时后,我用尽所有方式都还是无法传上照片,我最终放弃了在线上提交申请,直接预约去在柜台做!
之前描述的整个过程只是把原有的手工步骤信息化,和原本的申请手续一样。但线上办理和在柜台现场办理不同,在现场你可以要求对方直接把照片给你,也可以要求对方提供老护照,但在线上办理,应很容易从系统里找到个人护照信息,所以很多本来在柜台要手工填写的老护照信息就不需要再填了。
客户:怎么可以简化整个过程?最困难应是照片的更新?
我:有些国家是这样做法,比如你申请续证,只需要填上老证件的基本信息,系统就立马能识别出本来的证件 你确实有那个“旧”证后,便可立马提交申请。跟在网上购物一样,你确认过内容没问题,就在网上付费,然后打印申请表并在表上亲手签字,然后附上几张符合规格的照片,邮寄到政府机关。他做好新证件以后再邮寄回你。或者你自己到他规定的地点领取也可以。这样就能很简单地利用“低”科技解决方案,解决了刚才上传照片的困难。
从上面例子看到,我们应不仅是把那些本来手工的流程自动化,应该全局看要解决的问题本身,哪些过程自动化,哪些不应该自动化(比如传照片)。
甲方对怎么可以在线上做这个过程也没有概念,他只是知道,本来手工需要填表。
乙方也不知道,他只是做开发,也不知道有什么方面可以不用IT方式,而用其他方式更合理。
必须要一起探讨才可以有最好的解决方法。
以上例子,业务用例是线上续护照。但有些功能不靠系统处理,如上传照片,不归纳为产品用例,用其他方式手工处理。
以上只是考虑了正常业务流程,也要考虑各种异常场景才算全面。(请动脑筋,写出各种异常场景,附件里有以往学员的答案,供参考。)
所以作为业务分析师,你很可能要改变用户思考问题的方式,例如利用业务过程模型,配合场景与页面原型,与利益相关者一起探索问题的本质。软件系统必须为拥有它的人提供最理想的价值,构建软件系统本身(例如只是把现有流程自动化)不一定能解决客户业务问题。
识别利益相关者
和杭州客户领导吃晚饭,领导就跟同桌的项目经理开玩笑说:“你们刚刚完成内部项目管理自动化工具,做调研的时候好像没有找过我? 其实我是其中一位经常要使用这系统的管理者,下面项目的监控、申请都是经过我,但我发现这个系统很不合用,对收集我需要的项目信息没有作用。比如没办法处理一些批准信息。”
从上面对话,可以了解如果没有全面识别项目的利益相关者,可能会影响到项目的成败。例如我接触一些有些具备开发经验的需求人员,但他们通常只注意功能需求的技术细节。
问他们:“哪些是你的项目干系人?”
答:“甲方有协调员,要访谈哪些人都是由甲方协调员安排,我们听他安排。”所以为了避免未能识别所有干系人的风险,就要主动跟甲方一起策划。我们说沟通计划必须是甲乙方一起合作做出来,而且会牵涉甲乙方各个层次的人。
例如要听甲方出资人的需求,可能就要乙方的总经理出马,乙方的需求人员顶多可以跟甲方对口的项目组人员沟通。(如何可以做好识别干系人,并制订沟通计划,可详见附件。)
非功能性需求
虽然很多项目有性能、易用性等非功能需求部分,但缺乏可衡量的量化指标。
例如,多少用户量、数据量、什么平台与网络环境下的反应时间。
“客户没有提非功能的具体需求。”需求人员可能说。
“但没有明确可衡量的需求不等于没有要求。假如验收时甲方项目经理换了人,项目可能会因为反应时间太慢,甲方说不能接受,但因为非功能需求不明确,你们也无法证明产品满足需求,最终项目可能被拒收。所以建议你们也要写上具体可验证的性能需求,保障自己。如果客户没有具体要求,可以依据以前同类项目性能测试结果,制定容易达到的性能规格,成为需求模板。”
除了性能 (Performance) 外,其他主要非功能需求包括:
- 产品观感(Look and Fell)
- 产品的外观和感觉越来越受重视,例子:苹果iPAD MacBook 等都让客户觉得产品设计精简但高贵
- 可用性与易用性(Usability and Humanity)
- 线上网购手机APP,能否容易找到喜欢的菜式、挑选并下单
- 操作环境(Operational and Environmental)
- 从肩高跌落时,产品仍能存活
- 产品应在什么温度、湿度等条件下使用
- 产品应节省电池寿命
- 可维护性和支持(Maintainability and Support)
- 产品应易于移植到Android和iOS
- 能简单、快速地从原有的产品导出资料,更新到新一代同类产品
- 应翻译成各种外文
- 安全(Security)
- 权限(Access),例如:只允许哪些人使用
- 隐私(Privacy),例如:防止打印任何个人及机密资料;防止未经授权的人进一步或二手使用
- 完整性(Integrity),例如:确保传输的数据相对应
- 审计(Auditing),例如:在法定期间保留所有交易的日记账。
- 文化(Cultural),法律(Legal)
其他最佳实践
用户故事卡
用户故事卡片目的是让用户(业务)与开发沟通的桥梁。
需求卡片除了包括需求描述,理由,验收标准外,还应有以下内容:
- 顾客满意度/顾客不满意度:
用两个数比单纯用优先级能更全面反应客户声音。
(如想多了解为什么要这样分,请看附件里的“客户声音:Kano Diagram”)
- 来源:每项需求都应可追溯到源头.例如需求是哪个人,什么岗位提出.
- 冲突与依赖其他需求:是/否; 确保需求之间的一致性。
- 独立的需求编号:
因为设计、编码、测试用例都应与需求相互对应,有明确编号才能对应。
(用实体卡片,团队难以互动、分享,有些公司采用系统 记录与跟踪需求。电子卡也应包括以上内容。)
做好需求评审
很多团队都有做需求评审,但因为没有主要关注点,起不了质量把关的作用,可以利用以下的检查单提醒需求有没有犯了这些错误,尽早改正。
评价和验收的准则可包括:
|
总结
上面简述了3类需求常见问题:
- 需求没有按价值过滤与分析,分优先级;没有全面考虑各种场景
- 没有全面识别利益相关者
- 没有明确描述非功能需求,并可验证
和2条实践:
- 用户故事卡
- 需求评审
都可以与CMMI模型对应:
- 需求分析:RDM 3.5, 3.6, 3.2 ( 场景 )
- 干系人:PLAN 2.4, MC 2.2 ( 沟通的策划与监控 )
- 非功能需求:RDM 2.2 ( 客户需求,包括功能与非功能需求 )
- 需求卡片:RDM 2.2 , 2.4 ( 客户需求与活动或工作产物之间双向可追溯 )
- 需求评审:RDM 2.3
附件
利益相关者
利益相关者计划检查单 (Stakeholders Plan Checklist):
1) 列出所有潜在的利益相关者(List all potential stakeholders)
1a. 类型/分组 (What are the base Segments)
1b. 可否再细分(Any sub-segments)
2)把她们分为 F(友好)、I(忽略)、U(不友好)
Assign F (Friendly)、I (Ignore)、 U (Unfriendly) to them
3)他们最关注什么?
What is important to them?
4)学习目标 (Learning objectives):
针对某利益相关者,我们需要了解什么?
For each stakeholder, what will we need to learn?
5)怎样沟通 (How)
6)什么时间 (When)
抽样计划 (Sampling plan)
如何招募(How to recruit)
如何能获得承诺(How to get commitment)
[针对以上第1至第3项,参阅以下实例/解读]
实例/解读(Examples / Explanation)
某公司专门设计、开发新一代手提电脑产品。
1) 全面考虑各类利益相关者(Stakeholders)
出资人 (Sponsor):出资人为产品的开发付钱
顾客 (Customer):顾客购买产品。必须对他们有足够的了解,理解他们认为什么有价值,所以会购买什么产品。
用户 (User):确定用户的目的是为了理解他们所做的工作,以及他们认为哪些改进有价值。
在开发消费产品、大市场软件时,应该考虑用一个“假想用户”。假想用户是一个虚拟用户,它是大多数用户的原型。
类型/分组的例子如下:
未来笔记本电脑的潜在用户:
大类:
- 商业人士 (Business)
- 媒体专业人士(Media Pro)
- 家庭用户(Home)
细分:
- 主要用户(Lead User)
- 有极高要求者(有挑战的 Demanding)
- 潜在用户(有潜力的 Potential)
- 追求技术完美者 (技术流 Tech-Phobic)
2) 策划包括哪些用户(User inclusion strategy)
依据设计人员会怎么对应,把不同识别出来的利益相关者分成 F、I、U
例:以针对笔记本电脑创新产品
F(Friendly)友好,比如家庭用户、商业用户、媒体专员
I(Ignore)忽略 ,比如忽略残疾人士
U(Unfriendly)不友好,比如黑客、小孩(禁止他下载游戏、玩游戏)
3) 他们注重什么(主要关注点)
干系人 | 角色/概况 | 质量关注重点 |
---|---|---|
商业用户 | 长期出差者 -坐长途飞机 -做演示 -保护某些秘密文档 | -待机时长 -屏幕清晰度 -安全性 |
专业媒体 | 创造性工作;并要协同。 录音和录视频 | 数字带宽(声音和视频) 电脑速度和内存 |
家庭用户 |
- 以上有那些在调研之前已知,其他有那些需要挖掘。
客户声音:Kano Diagram
可以用下图分析用户对需求优先级:
解读上下两个箭头应怎样看:
- 下面的箭头代表理所当然(Take it for granted),如果缺乏,客户会很不满意,包括觉得是理所当然 (例如满意度:中立1,非常不满5)
- 上面的箭头代表是加分项 (Attractive),如果包括会非常满意,但如果缺乏不会觉得不满意 (例如满意度:非常满意5 ,不满意度:中立1)
所以“需求卡片”用两个系数:顾客满意度+顾客不满意度,能更好判断某功能属于哪类功能需求。
线上续护照的 异常场景
以下是部分异常场景: 个人信息类
- 信息不符,无法识别
- 生僻字姓氏,系统无法识别
付款
- 支付失败
- 直接经银行付款
- 经渠道支付验证出错
系统类
- 系统间接口兼容性问题,提交失败
- 系统出现故障,无法登录或无法上交
- 浏览器兼容性问题
特殊情况
- 法定假日,不接受申请
- 紧急情况:申请人遇到急病,亲人海外死亡等紧急情况,需加急处理
- 信息错误:申请表信息填写不完整或填写错误,需补正
- 照片不符合规格
特殊人群
- 申请人属于未成年人
- 父母国籍不一致,无法线上判断国籍
参考 References
- Beck, Kent , with D. West. "User Stories in Agile Software Development" , Ch.13 of Scenarios, Stories, Use Cases: Through the Systems Development Life-Cycle edited by F. Alexander(2004)
- Robertson, S. Mastering the requirements process. (2006) 2/e
相关文章:

《A++ 敏捷开发》- 18 软件需求
需求并不是关于需求 (Requirements are not really about requirements) 大家去公共图书馆寄存物品,以前都是扫二维码开箱,有些图书馆升级了使用指纹识别。 “是否新方法比以前好?”我问年轻的开发人员。 “当然用指纹识别好。新技术&#x…...

计算机网络:计算机网络的组成和功能
计算机网络的组成: 计算机网络的工作方式: 计算机网络的逻辑功能; 总结: 计算机网络的功能: 1.数据通信 2.资源共享 3.分布式处理:计算机网络的分布式处理是指将计算任务分散到网络中的多个节点(计算机或设备&…...

Upload-Labs-Linux 1-20
前端校验绕过:pass 01 两种思路:1.通过抓包,修改后缀 2.前端禁用js绕过前端后缀检验 首先写一个木马,改为图片格式GIF89a<?php eval($_POST[cmd])?>抓包之后改为PHP格式: 使用蚁剑连接木马,第一次尝…...
Compose笔记(八)--权限
这一节主要了解一下Compose中权限的申请,其中主要用到accompanist-permissions这个权限库,它是一个简化的Android Compose 中权限管理的库,如下使用: 栗子: 依赖添加 dependencies {implementation("com.google.accompani…...
单例模式:确保一个类只有一个实例
目录 引言 1. 单例模式的核心思想 2. 单例模式的实现方式 2.1 饿汉式单例 2.2 懒汉式单例 2.3 线程安全的懒汉式单例 2.4 双重检查锁定(Double-Checked Locking) 2.5 静态内部类实现单例 2.6 枚举实现单例 3. 单例模式的使用场景 4. 单例模式…...

推荐一个好用的在线文本对比网站 - diffchecker
推荐网址:https://www.diffchecker.com UI设计也很不错,响应也很快,广告少 生成的对比还可以生成在线链接:(点击右上角“分享”) 可设置过期时间等 我生成的示例:https://www.diffchecker.c…...
学习第八十五行
[capture](parameters) -> return_type {// function body }capture: 捕获列表,指定如何捕获周围作用域中的变量。parameters: 参数列表,与普通函数类似。return_type: 返回类型,可以省略,编译器会自动推断。function body: 函…...

基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程
一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架,提供了多种工具和库来构建 RESTf…...

【Python 2D绘图】Matplotlib绘图(统计图表)
【Python 2D绘图】Matplotlib绘图(统计图表) 1. 概述1.1 简介1.2 安装1.3 导入1.4 保存1.5 数据来源1.5.1 Numpy ndarray1.5.2 Pandas DataFrame 1.6 中文显示 2. 基础样式2.1 颜色2.1.1 简称2.1.2 全称 2.2 布局2.2.1 Matplotlib 画布划分2.2.2 绘制子图…...
vue3框架的响应式依赖追踪机制
当存在一个响应式变量于视图中发生改变时会更新当前组件的所以视图显示,但是没有视图中不写这个响应式变量就就算修改该变量也不会修改视图,这是为什么?我们能否可以理解宽泛的理解为vue组件的更新就是视图的更新,单当视图中不存在…...
.Net 6 上传文件接口 文件大小报错整体配置
/// <summary>/// 上传文件/// </summary>/// <param name"file"></param>/// <returns></returns>[HttpPost("UploadifyFile")][RequestSizeLimit(2000 * 1024 * 1024)] // 设置最大请求体大小为 100MBpublic async …...

Git基础之工作原理
基础概念 git本地有三个工作区域,工作目录 Working Directory,暂存区Stage/Index和资源区Repository/Git Directory,如果在加上远程的git仓库就是四个工作区域 四个区域与文件交换的命令之间的关系 WorkSpace:工作区,就…...

小程序 wxml 语法 —— 41列表渲染 - 进阶用法
这一节讲解列表渲染的两个进阶用法: 如果需要对默认的变量名和下标进行修改,可以使用 wx:for-item 和 wx:for-item: 使用 wx:for-item 可以指定数组当前元素的变量名使用 wx:for-index 可以指定数组当前下标的变量名 将 wx:for 用在 标签上&…...
ElasticSearch 入门教程
ElasticSearch 入门教程 ElasticSearch 是一个分布式、可扩展的搜索和分析引擎,基于 Apache Lucene 构建,支持全文检索、结构化查询和聚合分析。本教程将带你深入了解 ElasticSearch 的核心概念、安装配置、常见操作,并提供示例代码…...

用Python写一个算24点的小程序
一、运行界面 二、显示答案——递归介绍 工作流程: 1. 基本情况:函数首先检查输入的数字列表 nums 的长度。如果列表中只剩下一个数字,它会判断这个数字是否接近 24(使用 abs(nums[0] - 24) < 1e-10 来处理浮点数精度问题&…...
分布式网络
分布式网络(Distributed Network)指的是一种计算机网络架构,其中计算资源(计算、存储、数据处理等)分布在多个物理或逻辑上的节点上,而不是集中在单一的服务器或数据中心中。这种架构的主要目标是提高系统的…...

忘记dedecms后台超级管理员账号和密码的解决方案
解决方案: 方案一、数据库修改: 1、前提是您能登录到数据库后台,登录MySQL数据库管理工具(如phpMyAdmin) 2、打开数据库中的 dede_admin 表,找到管理员记录,将 pwd 字段的值改成 f297a57a5a7…...

【Linux学习笔记】Linux基本指令分析和权限的概念
【Linux学习笔记】Linux基本指令分析和权限的概念 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…...

Git基础之分支
常用指令 git branch 列出本地所有分支 git branch -r 列出所有远程分支 git branch [branch-name] 新建一个分支,但依然停留在当前分支 git checkout -b [branch] 新建一个分支,并切换到该分支 git merge [branch] 合并指定分支当前分支 git branch -d …...
MAC电脑常用操作
环境:M3芯片 ,macOS15.2 🚀 快捷键 🖥️ 窗口管理 ✅ 退出/进入全屏模式 • 浏览器等应用:⌘ Command Ctrl F ✅ 最小化当前窗口 • ⌘ Command M • 💡 隐藏窗口但保留应用在后台运行 ✅ 关闭当前标…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...