侯捷 C++ 课程学习笔记:C++运算符与表达式

C++运算符与表达式

目录

C++运算符与表达式

前言

📚本篇目标

重难点说明

学习正文

1、算术运算符

基础运算示例:

核心要点:

2. 赋值运算符

3. 比较与逻辑运算符

练习题

单选题-5

多选题-3

判断题-2

代码题-1

📝 答案解析

单选题

多选题

判断题

代码题

总结

C++的优势对比于python的维度点说明


前言

本系列文章目的在于将C++的基础内容完全夯实,最终目的是为后期的深度学习在算法上有一定的铺垫,前期在学习数学的过程中也会有很大的帮助,相对于python来说C++有自身的优势,文末会有 C++的优势对比于python的维度点说明,所以我这里先写了C++的用法说明,后续会有Python的,各自有各自的优势,我们要根据具体的需求来分析使用哪种语言更为方便,其它的语言暂时不在考虑范畴之内,我们的目标是AI深度学习。

前置环境与代码结构文章:

1、C++环境理解与配置(MinGW)

2、C++的Visual Studio Code运行环境配置

3、头文件与类的声明

整体文章目录:入门 C++ 课程目录

📚本篇目标

1. 掌握C++中5类基础运算符的语法与运算规则

2. 理解运算符优先级与结合性对表达式的影响

3. 能够正确编写复合赋值表达式

4. 熟练运用比较/逻辑运算符构建条件表达式

重难点说明

重点突破:  
整数除法特性:`10/3=3`(结果自动取整)  
取模运算的符号规律:结果符号与被除数一致(C++11标准)  
逻辑运算符短路特性:`&&`遇假即停,`||`遇真即停  

难点攻克:  
区分`=`与`==`的用法(常见错误点)  
复合表达式求值顺序:`a = b += c++ * --d`  
布尔值的隐式转换:非零为true,零为false  

学习正文

1、算术运算符

基础运算示例:
int a = 10 + 3;   // 13
int b = 10 - 4;   // 6
int c = 10 * 2;   // 20
int d = 10 / 3;   // 3(整数除法)
double e = 10.0 / 3; // 3.333(浮点除法)
int f = 10 % 3;   // 1(取模)
int g = -10 % 3;  // -1(C++11标准)
核心要点:

优先级:() > * / % > + -
混合运算自动类型提升:int + double → double
自增运算符陷阱:

int i = 5;
int m = i++ * 2; // m=10, i=6(后置)
int n = ++i * 2; // n=12, i=6(前置)

2. 赋值运算符

基础与复合操作

int x = 10;       // 基本赋值
x += 5;           // 等价于 x = x + 5
x *= 3;           // 等价于 x = x * 3
int y = (x = 20); // 赋值表达式返回值

// 链式赋值示例
int a, b, c;
a = b = c = 100;  // 从右向左结合

3. 比较与逻辑运算符

条件构建三剑客

// 比较运算符
bool b1 = (10 > 5);   // true
bool b2 = (10 == 10); // true

// 逻辑运算符
bool flag = (x > 0) && (y < 100); // 逻辑与
bool isOK = !flag;                // 逻辑非

// 短路特性演示
int i = 0;
(i != 0) && (10/i > 3); // 安全避免除以零

练习题

单选题-5

1. 表达式 `(5 + 3) * 2` 的结果是?  
   A) 16  
   B) 11  
   C) 13  
   D) 10  

2. 在C++中,`-15 % 4` 的结果是?  
   A) -3  
   B) 1  
   C) -1  
   D) 3  

3. 执行 `int i=5; int j = ++i + i++;` 后,j 的值是?  
   A) 12  
   B) 13  
   C) 14  
   D) 15  

4. 表达式 `10 / 3.0` 的结果类型是?  
   A) int  
   B) float  
   C) double  
   D) long  

5. 下列运算符优先级最高的是?  
   A) +  
   B) *  
   C) ()  
   D) %  

多选题-3

1. 以下哪些运算符会改变操作数的值?(多选)  
   A) +  
   B) +=  
   C) ++  
   D) ==  

2. 关于逻辑运算符的正确描述有?(多选)  
   A) `&&` 需要两侧都为真才返回真  
   B) `||` 的优先级高于 `&&`  
   C) `!` 是单目运算符  
   D) 逻辑表达式返回值只能是0或1  

3. 下列哪些表达式是合法的?(多选)  
   A) a = b = 5` 
   B) 5 = x
   C) x += y *= 3
   D) ++(a+b)

判断题-2

1. x *= y + 3 等价于 x = x * y + 3 ( )  
2. 在C++中,true 的整型值为1,false 为0 ( )  

代码题-1

// 编写函数判断一个数是否是偶数且大于10
bool checkNumber(int num) {
    // 补全代码
}

📝 答案解析

单选题

  1. A) 16
    解析:括号优先级最高,先计算5+3=8,再8*2=16

  2. C) -1
    解析:C++取模结果符号与被除数一致,-15 ÷ 4 = -3余-3,但根据C++11标准,-15%4=-3*4 + (-3) → 余数为-3,但实际编译器实现可能不同,需注意

  3. A) 12
    解析:++i先增到6,表达式值为6;i++先用后增,表达式值为6,此时i=7,最终j=6+6=12

  4. C) double
    解析:3.0是double类型,运算时int自动提升为double

  5. C) ()
    解析:括号优先级最高,其次是* / %,最后是+ -

多选题

  1. B、C
    解析:+=和++会改变操作数值,+和==不改变

  2. A、C
    解析:B错(&&优先级高于||),D错(C++中bool类型为true/false,但可隐式转换为1/0)

  3. A、C
    解析:B错(不能给字面量赋值),D错(自增操作数必须为左值)

判断题

  1. ×
    解析:正确等价应为 x = x * (y + 3)


  2. 解析:C++中布尔值隐式转换时,true→1,false→0

代码题

bool checkNumber(int num) {
    return (num % 2 == 0) && (num > 10);
}
// 解析:使用取模判断偶数,逻辑与连接两个条件

总结

运算符的本质是数据操作的指令符号,表达式则是通过运算符连接的操作序列。掌握运算符特性如同掌握数学公式,是构建程序逻辑的基础能力。通过大量练习培养运算符使用的肌肉记忆!

聚焦算术、赋值、比较、逻辑四类运算符的应用规则与底层特性。重点剖析整数除法的取整机制(如`10/3=3`)、取模运算的符号规律(结果符号与被除数一致)及逻辑运算符的短路特性(`&&`遇假即停,`||`遇真即停)。通过典型代码示例演示复合赋值(`+=`)、自增优先级(`i++`与`++i`差异)和隐式类型转换(`int+double→double`)等关键概念。针对常见易错点如`=`与`==`混淆、表达式求值顺序等设置梯度练习,包含16道客观题与1道代码实践题,强化运算符优先级(`()>* /%>+ -`)和结合性(右结合`a=b=c`)的实战应用。通过`(year%4==0 && year%100!=0)||year%400==0`等逻辑表达式设计,培养将数学逻辑转化为代码的能力,最终建立规范的运算符使用范式与表达式构建思维。

C++的优势对比于python的维度点说明

对比维度C++ 优势Python 情况
性能效率1. 执行速度快:编译型语言,将代码编译为机器码,处理大量数据、复杂算法时效率高,能充分利用硬件资源。
2. 内存管理精细:允许程序员直接管理内存,精确控制分配和释放,优化内存使用,适合对内存要求苛刻的系统。
1. 执行速度慢:解释型语言,代码逐行解释执行,在处理大规模数据和复杂计算时性能较差。
2. 内存管理自动化:Python 有自动的垃圾回收机制,虽然方便但可能导致内存使用不够精细,在内存紧张的场景下可能出现问题。
底层控制能力1. 硬件访问能力强:可直接访问计算机硬件资源,如寄存器、内存地址等,便于与底层硬件高效交互,适用于驱动程序、嵌入式系统开发。
2. 系统级编程优势:在操作系统、编译器、数据库管理系统等系统软件开发中,能与底层系统更好交互,实现资源精细管理和控制,提升系统性能和稳定性。
底层控制能力弱:Python 主要用于高层级的应用开发,对底层硬件的直接访问能力有限,在系统级编程方面不够灵活和高效。
语言特性1. 强类型语言:编译时进行严格类型检查,有助于发现早期错误,提高代码稳定性和可靠性,减少运行时类型不匹配错误。
2. 支持多种编程范式:支持面向对象、泛型、函数式等多种编程范式,开发者可根据问题和需求灵活选择。
1. 动态类型语言:类型检查在运行时进行,虽然编写代码更灵活,但可能在运行时出现类型相关的错误,代码的稳定性和可维护性相对较弱。
2. 编程范式相对有限:主要以面向对象和函数式编程为主,泛型编程的支持不如 C++ 强大。
可移植性1. 跨平台能力:编写的代码可在不同操作系统上编译运行,只要有相应编译器和运行时环境,适合开发跨平台应用。
2. 库的可移植性:许多开源库和框架(如 Boost、Qt)具有良好可移植性,可在不同平台使用,减少跨平台开发工作量。
1. 跨平台性依赖解释器:Python 代码的跨平台性依赖于 Python 解释器,虽然大多数情况下能在不同操作系统上运行,但在一些涉及底层系统调用的场景下可能会有兼容性问题。
2. 部分库存在兼容性问题:虽然 Python 有丰富的库,但部分库在不同平台上的表现和兼容性可能存在差异。
生态系统和工具链1. 成熟的开发工具:有 Visual Studio、CLion、Eclipse 等成熟开发工具和集成开发环境,提供强大代码编辑、调试、性能分析等功能,提高开发效率。
2. 丰富的库资源:拥有大量专业级库,如用于数学计算的 LAPACK、图形处理的 OpenGL、网络编程的 ACE 等,为专业领域开发提供支持。
1. 开发工具相对简单:Python 的开发工具(如 PyCharm、VS Code 等)功能相对侧重于代码编辑和基本调试,在一些复杂的性能分析和底层调试方面不如 C++ 的开发工具强大。
2. 库更侧重于高层应用:Python 的库主要用于数据分析、机器学习、Web 开发等高层应用场景,在底层系统编程和高性能计算方面的专业库相对较少。
安全性和稳定性1. 资源管理安全:通过智能指针等机制,一定程度上保证资源安全管理,避免内存泄漏和悬空指针问题,提升程序稳定性和安全性。
2. 代码审查严格:语法相对复杂,在大型项目中严格的代码审查和规范可确保代码质量和安全性,减少潜在漏洞和风险。
1. 资源管理自动化存在隐患:自动垃圾回收机制可能导致一些资源管理问题,例如循环引用可能会造成内存泄漏,虽然 Python 有解决方案,但增加了复杂性。
2. 代码灵活性带来风险:动态类型和简洁的语法使得代码编写容易,但也可能导致代码的可读性和可维护性下降,增加了出现安全漏洞的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值