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

快速学C语言——第 4 章:运算符与表达式

第 4 章运算符与表达式​ 在编程中我们经常需要对数据进行各种计算和比较就像在数学中一样。C 语言提供了一系列运算符让我们能够对变量和值进行赋值、计算、比较、逻辑判断等操作。将变量、常量和运算符按照语法规则组合在一起就形成了表达式。表达式会产生一个具体的值是构建程序逻辑如条件判断、循环执行、数据计算的基础组成部分。4.1 算术运算符​算术运算符用于执行基本的数学运算包括加、减、乘、除、取模求余数适用于数值类型整型、浮点型数据。运算符描述示例结果加法5 38-减法10 - 46*乘法6 * 742/除法15 / 43 (整数除法)%取模 (求余数)15 % 43​ 关键注意事项​ 1、整数除法两个整型数据相除时结果会自动舍弃小数部分仅保留整数而非四舍五入。​ 2、浮点数除法若至少有一个操作数是浮点型float/double则结果为浮点型保留小数部分。​ 3、取模运算仅适用于整型数据用于计算除法后的余数结果的正负号与被除数一致如10 % 3 1-10 % 3 -1。示例#includestdio.hintmain(){inta15,b4;floatc15.0f;// 浮点型操作数。intd-15;printf(15 4 %d\n,ab);// 输出19整数加法。printf(15 - 4 %d\n,a-b);// 输出11整数减法。printf(15 * 4 %d\n,a*b);// 输出60整数乘法。printf(15 / 4 %d\n,a/b);// 输出3整数除法舍弃小数。printf(15.0f / 4 %.2f\n,c/b);// 输出3.75浮点数除法。printf(15 %% 4 %d\n,a%b);// 输出3取模正数余数。printf(-15 %% 4 %d\n,d%b);// 输出-3取模余数与被除数同号。return0;}4.2 赋值运算符​ 赋值运算符用于将右侧的值或表达式结果赋给左侧的变量最基础的是C 语言还提供了复合赋值运算符结合算术 / 位运算的简化写法让代码更简洁。运算符描述示例等价于简单赋值x 5x 5加后赋值x 3x x 3-减后赋值x - 2x x - 2*乘后赋值x * 4x x * 4/除后赋值x / 2x x / 2%取模后赋值x % 3x x % 3​ 关键注意事项​ 1、赋值运算符的左侧必须是 “可修改的变量”如a 5合法5 a非法。​ 2、复合赋值运算符会先执行运算再赋值优先级低于算术运算符。​ 3、赋值表达式本身也有值值为 “赋值后变量的结果”如a b 5等价于b 5; a 5右结合。示例#includestdio.hintmain(){intx10;x5;// 等价于 x x 5 → x 15。printf(x 5 后x %d\n,x);// 输出15。x*2;// 等价于 x x * 2 → x 30。printf(x * 2 后x %d\n,x);// 输出30。x%7;// 等价于 x x % 7 → 30 ÷ 7 4余2 → x 2。printf(x %% 7 后x %d\n,x);// 输出2。// 赋值表达式的右结合性。inta,b;ab8;// 先执行 b 8再执行 a b。printf(a %d, b %d\n,a,b);// 输出a 8, b 8。return0;}4.3 关系运算符​ 关系运算符用于比较两个值的大小或相等关系结果是逻辑值 ——1 表示 “真”条件成立0 表示 “假”条件不成立。关系运算的结果常用于条件判断如 if 语句、循环条件。运算符描述示例结果等于5 30 (假)!不等于5 ! 31 (真)大于5 31 (真)小于5 30 (假)大于等于5 51 (真)小于等于5 30 (假)​ 关键注意事项​ 1、区分相等判断和赋值这是最常见的编程错误之一如if (a 5)是判断if (a 5)是赋值永远为真。​ 2、浮点数比较由于精度问题不建议直接用比较浮点数如3.14 3.1400000001可能为假应判断两者差值的绝对值是否小于极小值如fabs(a - b) 1e-6。示例#includestdio.h#includemath.h// 用于fabs函数浮点数绝对值。intmain(){inta10,b20;floatpi13.14f,pi23.1400001f;printf(%d %d 的结果是%d\n,a,b,ab);// 输出0假。printf(%d ! %d 的结果是%d\n,a,b,a!b);// 输出1真。printf(%d %d 的结果是%d\n,a,b,ab);// 输出0假。printf(%d %d 的结果是%d\n,a,b,ab);// 输出1真。// 浮点数比较的正确方式。if(fabs(pi1-pi2)1e-6){// 差值小于10的-6次方视为相等。printf(pi1 和 pi2 相等\n);}else{printf(pi1 和 pi2 不相等\n);}return0;}4.4 逻辑运算符​ 逻辑运算符用于组合多个关系表达式或逻辑值形成更复杂的条件判断结果同样是 1真或 0假。C 语言支持 “短路求值”能提高运算效率。运算符描述示例结果短路求值规则逻辑与 (AND)(5 3) (5 10)1 (真)左侧为假则右侧不执行||逻辑或 (OR)(5 3) || (5 2)1 (真)左侧为真则右侧不执行!逻辑非 (NOT)!(5 3)0 (假)无单目运算符​ 关键注意事项​ 1、逻辑与所有条件都为真结果才为真只要有一个为假结果为假。​ 2、逻辑或||只要有一个条件为真结果就为真所有条件都为假结果才为假。​ 3、逻辑非!将真变假、假变真如!0 1!5 0——C 语言中 “非 0 值都视为真”。​ 4、短路求值逻辑与左侧为假时右侧表达式不执行逻辑或左侧为真时右侧表达式不执行避免无效计算或副作用。示例#includestdio.hintmain(){intage20;inthas_license1;// 1表示真有驾照0表示假无驾照。intx5,y10;// 逻辑与两个条件都满足才为真。intcan_drive(age18)has_license;printf(可以开车%d\n,can_drive);// 输出1真。// 逻辑或满足一个条件即为真。intis_young_or_old(age18)||(age65);printf(是年轻人或老年人%d\n,is_young_or_old);// 输出0假。// 逻辑非取反。intno_license!has_license;printf(没有驾照%d\n,no_license);// 输出0假。// 短路求值示例逻辑与左侧为假右侧x不执行。intresult1(x10)(x);printf(result1 %d, x %d\n,result1,x);// 输出0x 5x未执行。// 短路求值示例逻辑或左侧为真右侧y不执行。intresult2(y5)||(y);printf(result2 %d, y %d\n,result2,y);// 输出1y 10y未执行。return0;}4.5 自增和自减运算符⚠️不建议大量使用​自增和自减–是单目运算符用于将变量的值 “直接增加 1” 或 “减少 1”分为前缀和后缀两种形式核心区别是 “增减操作” 和 “取值操作” 的执行顺序。运算符描述示例核心区别自增x前缀先自增再取值自增x后缀先取值再自增–自减–x前缀先自减再取值–自减x–后缀先取值再自减​ 关键注意事项​ 1、仅适用于变量如5非法x合法因为需要修改变量的值。​ 2、避免在同一表达式中多次使用如x x结果依赖编译器实现无统一标准易出错。示例#includestdio.hintmain(){intx5,y,z;// 后缀自增先赋值y x5再自增x6。yx;printf(x %d, y %d\n,x,y);// 输出x 6, y 5。x5;// 重置x。// 前缀自增先自增x6再赋值y6。yx;printf(x %d, y %d\n,x,y);// 输出x 6, y 6。// 自减示例。z10;printf(z-- %d\n,z--);// 后缀先取值10再自减z9。printf(z %d\n,z);// 输出9。printf(--z %d\n,--z);// 前缀先自减z8再取值8。return0;}4.6 条件运算符三元运算符⚠️了解即可​ 条件运算符是 C 语言中唯一的三目运算符语法简洁用于简化二选一的条件判断等价于简单的if-else语句。​ 语法格式条件表达式 ? 表达式1 : 表达式2。​ ● 执行逻辑先判断 “条件表达式” 的真假。​ ● 若为真非 0整个表达式的值为 “表达式 1” 的值。​ ● 若为假0整个表达式的值为 “表达式 2” 的值。​ 关键注意事项​ 1、优先级低于关系运算符和算术运算符高于赋值运算符。​ 2、结合性为 “右结合”如a ? b : c ? d : e等价于a ? b : (c ? d : e)。​ 3、表达式 1 和表达式 2 的类型应一致或可隐式转换避免类型不匹配。示例#includestdio.hintmain(){inta10,b20;intmax,min;intnumber15;// 求两个数的最大值等价于 if(ab) maxa; else maxb; 。max(ab)?a:b;printf(较大的数是%d\n,max);// 输出20。// 求两个数的最小值。min(ab)?a:b;printf(较小的数是%d\n,min);// 输出10。// 判断奇偶数。printf(%d是%s\n,number,(number%20)?偶数:奇数);// 输出15是奇数。// 右结合示例a10为真直接返回b20不执行后续判断。intresult(a5)?b:(b15)?30:40;printf(result %d\n,result);// 输出20。return0;}4.7 逗号运算符⚠️了解即可​ 逗号运算符用于将多个表达式分隔开按从左到右的顺序依次执行整个逗号表达式的值为 “最后一个表达式” 的值。​ 语法格式表达式1, 表达式2, ..., 表达式n。​ ● 执行逻辑先执行表达式 1再执行表达式 2…最后执行表达式 n最终结果为表达式 n 的值。​ ● 优先级所有运算符中最低低于赋值运算符如需改变优先级需加括号。​ 适用场景在允许单个表达式的位置如 for 循环的初始化 / 更新部分执行多个操作。示例#includestdio.hintmain(){inta1,b2,c,d;// 逗号表达式先执行a,再执行b,最终值为b后的结果3。c(a,b,b1);printf(a %d, b %d, c %d\n,a,b,c);// 输出a2, b3, c4。// 无括号时赋值运算符优先级更高先执行c a,再执行b逗号表达式值为b3。a1,b2;// 重置。da,b,b1;printf(a %d, b %d, d %d\n,a,b,d);// 输出a2, b3, d1d a的结果。// for循环中使用初始化a0、b5更新时a、b--。for(inti0;i3;i,a,b--){printf(i %d, a %d, b %d\n,i,a,b);}// 输出// i 0, a 2, b 3// i 1, a 3, b 2// i 2, a 4, b 1return0;}4.8 运算符的优先级与结合性​ 当一个表达式包含多个运算符时计算顺序由 “优先级” 和 “结合性” 共同决定 —— 优先级决定 “先执行哪个运算符”结合性决定 “优先级相同时的执行顺序”。4.8.1 常见运算符优先级从高到低优先级运算符类别具体运算符1括号()2自增 / 自减单目, --前缀、!、~位非3算术运算符*, /, %乘、除、取模4算术运算符, -加、减5关系运算符, , , 6关系运算符, !相等 / 不等7逻辑运算符逻辑与8逻辑运算符||逻辑或9条件运算符?:10赋值运算符, , -, *, /, %11逗号运算符,4.8.2 结合性规则左结合优先级相同时从左到右执行如算术运算符、关系运算符、逗号运算符。示例a b - c等价于(a b) - ca b 5是例外赋值运算符右结合。右结合优先级相同时从右到左执行如赋值运算符、条件运算符。示例a b 5等价于a (b 5)a ? b : c ? d : e等价于a ? b : (c ? d : e)。核心建议当不确定优先级或结合性时直接用括号明确执行顺序—— 既避免出错又让代码更易读括号优先级最高。示例#includestdio.hintmain(){inta5,b3,c2,result;// 无括号先乘后加优先级* resultab*c;printf(a b * c %d\n,result);// 输出115 3*2// 有括号先加后乘括号改变优先级result(ab)*c;printf((a b) * c %d\n,result);// 输出16(53)*2// 结合性示例赋值运算符右结合intx,y;xy10;// 等价于 x (y 10)printf(x %d, y %d\n,x,y);// 输出10, 10return0;}4.9 位运算符基础​ 位运算符用于直接操作二进制位适用于整型数据char、int、long 等底层编程如硬件操作、数据压缩中常用基础阶段需掌握核心用法。运算符描述示例二进制结果二进制按位与1010 0111 0010按位或1010 | 0111 1111^按位异或1010 ^ 0111 1101~按位非取反~1010 0101假设 4 位左移1010 1 10100右移1010 1 0101关键说明按位与对应位都为 1 时结果为 1可用于 “清 0 某些位”。按位或|对应位有一个为 1 时结果为 1可用于 “置 1 某些位”。按位异或^对应位不同时结果为 1可用于 “交换变量”“翻转某些位”。左移二进制位向左移动 n 位右边补 0等价于乘以 2^n如a 1等价于a * 2。右移二进制位向右移动 n 位左边补符号位正数补 0负数补 1等价于除以 2^n取整。示例#includestdio.hintmain(){inta10,b7;// a1010二进制b0111二进制printf(a b %d\n,ab);// 0010 → 2printf(a | b %d\n,a|b);// 1111 → 15printf(a ^ b %d\n,a^b);// 1101 → 13printf(~a %d\n,~a);// 按位取反依赖系统位数结果为负数printf(a 1 %d\n,a1);// 10100 → 2010*2printf(a 1 %d\n,a1);// 0101 → 510/2return0;}笔记算术运算符中整数除法会舍弃小数取模仅适用于整型浮点数比较需用 “差值绝对值” 避免精度问题。区分相等判断和赋值这是高频编程错误。逻辑运算符支持 “短路求值”左侧结果可确定时右侧表达式不执行需避免依赖右侧副作用如x。自增 / 自减的前缀和后缀核心区别前缀 “先增减再取值”后缀 “先取值再增减”避免同一表达式多次使用。条件运算符?:简化二选一逻辑结合性为右结合逗号运算符优先级最低结果为最后一个表达式的值。优先级括号 算术 关系 逻辑 条件 赋值 逗号不确定时用括号明确顺序。位运算符直接操作二进制位左移等价于乘 2、右移等价于除 2取整仅适用于整型数据。

相关文章:

快速学C语言——第 4 章:运算符与表达式

第 4 章:运算符与表达式 ​ 在编程中,我们经常需要对数据进行各种计算和比较,就像在数学中一样。C 语言提供了一系列运算符,让我们能够对变量和值进行赋值、计算、比较、逻辑判断等操作。将变量、常量和运算符按照语法规则…...

Gemini3.1Pro如何实现视觉平移不变性

“视觉 Transformer 的平移不变性(translation invariance)是否能在 Gemini 3.1 Pro 中实现?”这个问题的难点在于:平移不变性是视觉模型的归纳偏置,而 Gemini 3.1 Pro 是多模态大模型(LLM视觉/多模态能力&…...

如何通过Elden Ring FPS Unlock And More解锁《艾尔登法环》全部性能:新手完整指南

如何通过Elden Ring FPS Unlock And More解锁《艾尔登法环》全部性能:新手完整指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gi…...

DLSS Swapper:3个技巧彻底改变你的游戏性能优化体验

DLSS Swapper:3个技巧彻底改变你的游戏性能优化体验 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款革命性的游戏性能优化工具,它让你能够轻松管理NVIDIA DLSS、AMD FSR和Int…...

SingleFile:为什么你需要的不仅是网页保存,而是数字记忆的永恒守护?

SingleFile:为什么你需要的不仅是网页保存,而是数字记忆的永恒守护? 【免费下载链接】SingleFile Web Extension for saving a faithful copy of a complete web page in a single HTML file 项目地址: https://gitcode.com/gh_mirrors/si/…...

TCP 零窗口(Zero Window)是什么?一篇讲清楚成因、抓包特征、和拥塞/丢包的区别

TCP 零窗口(Zero Window)是什么?一篇讲清楚成因、抓包特征、和拥塞/丢包的区别 在很多网络故障现场里,业务方会一句话描述问题:“链路没断、带宽也不满,但接口就是慢,上传像堵住了一样。” 这类…...

Noto字体库:构建全球化数字产品的字体基石

Noto字体库:构建全球化数字产品的字体基石 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在全球化的数字时代,字体选择已不再是简单的美学决策,而是直…...

3分钟快速解锁碧蓝航线全皮肤:Perseus游戏补丁终极指南

3分钟快速解锁碧蓝航线全皮肤:Perseus游戏补丁终极指南 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 还在为碧蓝航线中那些精美皮肤无法体验而烦恼吗?Perseus原生库补丁为你提供…...

Noto字体库完整指南:如何为全球项目选择完美字体解决方案

Noto字体库完整指南:如何为全球项目选择完美字体解决方案 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 当你开发面向全球用户的应用或网站时,是否曾遇到过这样的…...

如何快速掌握DeepL翻译插件:终极跨语言浏览解决方案

如何快速掌握DeepL翻译插件:终极跨语言浏览解决方案 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 在全球化的数字时代,语言障碍是获取国际…...

linux学习进展 I/O复用函数——poll详解

在前几篇笔记中,我们学习了I/O复用的基础概念以及select函数的使用,了解到select通过监视多个文件描述符的读写状态,实现了单进程处理多I/O事件的需求。但select存在明显的局限性,比如最大文件描述符数量限制、参数传递繁琐、内核…...

2025届毕业生推荐的五大AI辅助写作网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 眼下,在学术以及职场文本生成这个范畴里,AI检测率过高这样的问题越发…...

初创团队如何利用 Taotoken 低成本启动 AI 功能开发与迭代

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用 Taotoken 低成本启动 AI 功能开发与迭代 对于资源有限的初创团队而言,在开发具备 AI 功能的产品时&a…...

2026届毕业生推荐的AI写作网站实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,占据主流地位的降低AI检测成功率的网站,凭借诸如改写润色、句法…...

靠谱糯米鸡机器厂家选择:企业采购决策关键因素分析

靠谱糯米鸡机器厂家选择:企业采购决策关键因素分析"选对糯米鸡机器厂家,不是看价格,而是看能否解决你的量产痛点!"企业采购糯米鸡机器时,常陷入"价格优先"的误区,忽略产能适配、品控稳…...

Rust Cargo工作空间:项目组织与依赖管理

Rust Cargo工作空间:项目组织与依赖管理 引言 Cargo是Rust的官方构建工具和包管理器。工作空间(Workspace)是Cargo的重要特性,允许将多个相关的crate组织在一起,共享依赖和配置。 本文将深入探讨Cargo工作空间的使用方法、最佳实践和高级配置…...

Rust异步运行时:从Tokio到生产环境实践

Rust异步运行时:从Tokio到生产环境实践 引言 异步编程是现代高性能后端服务的关键技术。Rust通过async/await语法和强大的运行时实现,提供了卓越的异步性能。 本文将深入探讨Rust的异步运行时,包括Tokio、async-std等运行时的原理、使用方法和…...

Rust Trait系统深度解析:从基础到高级应用

Rust Trait系统深度解析:从基础到高级应用 引言 Trait是Rust中实现代码复用和多态的核心机制。通过Trait,我们可以定义共享行为,并为不同类型实现这些行为。 本文将深入探讨Rust Trait系统的核心概念、高级特性和最佳实践。 一、Trait基础 1.…...

Python分布式系统设计:从理论到实践

Python分布式系统设计:从理论到实践 引言 分布式系统是现代后端架构的核心,它通过多节点协作来实现高可用、高性能和可扩展性。Python虽然不是传统的系统编程语言,但通过丰富的库和框架,也可以构建强大的分布式系统。 本文将深…...

企业微信打卡数据拉取实战:Spring Boot + FastJSON 完整配置流程(含AccessToken获取避坑指南)

企业微信打卡数据集成实战:Spring Boot工程化解决方案 最近两年,越来越多的企业开始将考勤管理从传统硬件设备迁移到企业微信这样的数字化平台。但真正把打卡数据用起来,往往需要与企业内部系统深度集成。上周刚帮一家零售企业解决了这个问题…...

打车VS地铁VS共享单车?成本/时间/可靠性三维测评(实测17次,误差±12秒)

更多请点击: https://intelliparadigm.com 第一章:奇点智能技术大会公共交通路线 前往奇点智能技术大会主会场(上海张江科学会堂)的公共交通方案已全面优化,支持实时路径规划与多模态换乘。推荐使用「MetroBus步行」组…...

为什么GitHub Copilot Review Mode在2026 Q1突然下线?真相藏在奇点大会发布的《AI原生审查伦理宪章》第7.2条中……

更多请点击: https://intelliparadigm.com 第一章:AI原生代码审查:2026奇点智能技术大会Code Review新范式 在2026奇点智能技术大会上,AI原生代码审查(AI-Native Code Review)正式取代传统人工规则引擎混合…...

Diablo Edit2完全手册:开源角色编辑器的深度解析

Diablo Edit2完全手册:开源角色编辑器的深度解析 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾在暗黑破坏神2中花费数小时刷装备,只为获得一件特定属性的装备&am…...

5分钟掌握B站视频下载:开源工具bilibili-downloader完全指南

5分钟掌握B站视频下载:开源工具bilibili-downloader完全指南 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法下…...

利用 Taotoken 统一接口简化多模型 A B 测试流程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 统一接口简化多模型 A/B 测试流程 对于算法工程师和开发者而言,评估不同大语言模型在特定任务上的表现是…...

在Taotoken模型广场根据任务需求挑选合适模型的实践心得

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken模型广场根据任务需求挑选合适模型的实践心得 作为一名开发者,在构建应用时,选择合适的模型是项…...

Ruby 变量

Ruby 变量 引言 在编程语言中,变量是存储数据的基本单元。Ruby 作为一种动态、面向对象的语言,同样依赖变量来存储和处理数据。本文将详细介绍 Ruby 中的变量类型、作用域、生命周期以及相关操作,帮助读者全面了解 Ruby 变量的使用。 变量类型 Ruby 中的变量类型主要分为…...

别再死记硬背ResNet结构了!用PyTorch手把手拆解残差块,搞懂Skip Connection为啥能防梯度消失

别再死记硬背ResNet结构了!用PyTorch手把手拆解残差块,搞懂Skip Connection为啥能防梯度消失 残差网络(ResNet)自2015年问世以来,已经成为深度学习领域的基石架构之一。但很多开发者在复现ResNet时,往往陷入…...

告别‘硬编码’:用DiffPool和SAGPooling玩转GNN图分类的‘可学习’池化

告别‘硬编码’:用DiffPool和SAGPooling玩转GNN图分类的‘可学习’池化 图神经网络(GNN)近年来在社交网络分析、分子属性预测等领域展现出强大潜力,但如何高效处理不同尺寸的图结构数据一直是技术难点。传统图池化方法如全局平均池…...

一维残差网络水下超声无损检测与缺陷识别【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)EWT-FastICA联合降噪与有效IMF分量筛选机制&#xff…...