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

1.4 C++之运算符与表达式


运算符与表达式教程

目标
  1. 掌握算术运算符(+, -, *, /)和逻辑运算符(&&, ||, !)。
  2. 理解表达式优先级规则。
  3. 实现一个简单计算器程序。

一、算术运算符:像数学课上的加减乘除

1. 四种基本运算
  • 加法(+:合并数量
int apples = 3 + 2;  // 小明有3个苹果,妈妈又给了2个,现在有5个
  • 减法(-:减少或比较差值
int money = 10 - 3;  // 原本有10元,买铅笔花了3元,剩下7元
  • 乘法(*:快速累加
int legs = 4 * 3;    // 3只小狗共有12条腿
  • 除法(/:平均分配
int cookiesPerChild = 6 / 3;  // 6块饼干分给3个孩子,每人2块
float realDivision = 7.0 / 2; // 精确除法结果是3.5(必须用浮点数)
2. 特别注意:整数除法 vs 小数除法
  • 如果操作数都是整数,结果会自动舍去小数(像取整):
cout << 5 / 2;   // 输出2,不是2.5!
cout << 7.0 / 2; // 输出3.5(至少一个数是小数)

二、逻辑运算符:做判断题的“神器”

1. 三种逻辑操作
  • 与(&&同时满足两个条件
bool canPlay = (homeworkDone && isSunny); // 作业做完且天气好才能出去玩
  • 或(||满足任意一个条件
bool canWatchTV = (isWeekend || isHoliday); // 周末或假期可以看电视
  • 非(!取反
bool isNotRaining = !isRaining; // 不下雨时可以去公园
2. 生活场景示例
int age = 12;
bool hasTicket = true;if (age >= 10 && hasTicket) { cout << "可以坐过山车!"; 
} else {cout << "不符合条件哦~";
}

三、表达式优先级:谁是“老大”?

1. 优先级规则(从高到低)
  1. **括号 **( ):强制优先计算
  2. **乘除 *** /:先算乘除
  3. **加减 **+ -:后算加减
  4. **逻辑运算符 && **||:最后判断
2. 示例解析
int result1 = 2 + 3 * 4;    // 3*4=12 → 2+12=14  
int result2 = (2 + 3) * 4;  // 2+3=5 → 5*4=20  
bool logic = (5 > 3) && (2 + 3 == 5); // 先计算算术,再判断逻辑 → true

四、动手实践:简单计算器

任务:输入两个数和操作符(+, -, *, /),输出计算结果。
代码示例
#include <iostream>
using namespace std;int main() {float num1, num2;char op;cout << "请输入第一个数字:";cin >> num1;cout << "请输入运算符(+ - * /):";cin >> op;cout << "请输入第二个数字:";cin >> num2;switch(op) {case '+':cout << "结果:" << num1 + num2;break;case '-':cout << "结果:" << num1 - num2;break;case '*':cout << "结果:" << num1 * num2;break;case '/':if (num2 != 0) {cout << "结果:" << num1 / num2;} else {cout << "错误:除数不能为0!";}break;default:cout << "无效的运算符!";}return 0;
}
代码解释
  • 使用 switch 根据运算符执行对应计算。
  • 除法时检查除数是否为0,避免程序崩溃。

五、常见问题解答(QA形式)

Q15 / 2 为什么等于2而不是2.5?
A:因为两个操作数都是整数,结果会自动取整。若要得到小数,至少一个数要写成小数形式(如5.0 / 2)。

Q2&&|| 可以一起用吗?
A:可以!但要注意优先级,建议用括号明确顺序。例如:

bool isHappy = (score > 90 && (isSunny || isHoliday));

Q3:输入字母而不是数字会怎样?
A:程序会出错!后续课程会学习如何检测输入错误(如数据类型验证)。


六、互动挑战

  1. 扩展计算器:增加计算平方的功能(输入^符号时计算 num1 * num1)。
  2. 逻辑谜题:编写程序判断用户是否能参加比赛,条件是年龄≥10岁且身高≥1.2米,或者有家长陪同。

生活小实验

让孩子用代码解决实际问题:

  • 零花钱计算:每周攒5元,计算3个月(12周)后总金额。
  • 天气决策:如果温度>25℃且不下雨,输出“去游泳”,否则输出“在家学习”。
http://www.xdnf.cn/news/565903.html

相关文章:

  • leetcode hot100刷题日记——8.合并区间
  • java综合交易所13国语言,股票,区块链,外汇,自带客服系统运营级,有测试
  • Circle宣布Circle Payments Network主网上线
  • digitalworld.local: VENGEANCE靶场
  • 网络框架二次封装:基于Kotlin的高扩展性网络请求框架完整实现
  • 网工每日一练
  • 禁止window安全中心乱删文件
  • HarmonyOS基础组件:Button三种类型的使用
  • 百度Q1财报:总营收325亿元超预期 智能云同比增速达42%
  • OceanBase 开发者大会,拥抱 Data*AI 战略,构建 AI 数据底座
  • 开源STM32F429汽车仪表盘基于LVGL界面
  • 游戏引擎学习第303天:尝试分开对Y轴和Z轴进行排序
  • SkyWalking 报错:sw_profile_task 索引缺失问题分析与解决
  • 【Java学习笔记】main方法
  • 虚幻基础:摄像机
  • 真实世界中的贝叶斯网络:Bootstrap、模型平均与非齐次动态的科研应用
  • GPT 等decoder系列常见的下游任务
  • 【VSCode】安装与 ssh 免密登录
  • 基于Springboot + vue3实现的流动摊位管理系统
  • curl: (35) Peer reports incompatible or unsupported protocol version.
  • 弱网服务器群到底有什么用
  • [案例七] NX二次开发标识特征的导入与布尔运算
  • YOLO训练输入尺寸代表什么 --input_width 和 --input_height 参数
  • java 集合总结
  • 小黑黑prompt表述短语积累1
  • 作物遗传与种质创新利用全国重点实验室-随笔10
  • CNN vs ViT:图像世界的范式演进
  • 【npm】npm命令大全
  • C#开发利器:SharpBoxesCore全解析
  • 智能门锁为什么需要做欧盟网络安全 EN18031 标准检测认证