第 2 课变量、数据类型和基本运算这一课我们开始真正接触 C 里最常见的一组基础。今天只学int double char bool以及最简单的 - * /先不多学。1. 为什么 C 要区分数据类型假设机械臂程序需要保存下面这些信息关节编号3 关节角度45.6° 电机状态正常 / 异常 状态字符A它们明显不是同一种东西。所以 C 要告诉计算机这块内存准备存什么类型的数据比如int joint 3;表示joint ┌─────┐ │ 3 │ └─────┘ 类型整数而double angle 45.6;表示angle ┌────────┐ │ 45.6 │ └────────┘ 类型小数2.int整数你已经认识它了。int age 20;例如int joint 1; int speed 5; int count 100;这些都是整数。可以保存0 1 5 100 -3 -50但它的设计目标不是存3.14 45.6 0.0013.double小数机器人里面特别常用。double angle 30.5;例如double joint1 45.2; double distance 0.35; double speed 5.5;以后你写机械臂程序会大量见到它。比如double target_angle 30.5;意思就是目标角度是 30.5。4.char单个字符例如char grade A;注意A两边是单引号。char一般只保存一个字符。比如char state R;可以约定R Ready E Error因此char state E;可以表示设备当前处于 Error 状态。当然真实工程里通常不会只靠一个char来做复杂状态管理这只是现在为了理解类型。5.bool真假这个特别重要。bool motor_on true;bool只有两个主要值true false分别表示真 假例如bool motor_on true;可以理解成电机当前开启。而bool emergency_stop false;可以理解成急停当前没有触发。以后机器人控制里会大量出现bool connected; bool initialized; bool target_reached; bool gripper_closed;这类变量。6. 四种类型放一起看int joint 2; double angle 45.5; char state A; bool motor_on true;可以画成joint ┌──────┐ │ 2 │ └──────┘ 整数 angle ┌──────┐ │ 45.5 │ └──────┘ 小数 state ┌──────┐ │ A │ └──────┘ 字符 motor_on ┌──────┐ │ true │ └──────┘ 真假7. 基本运算先看int a 10; int b 2;那么int c a b;结果c 12这是加法。减法int c a - b;结果c 8乘法C 乘法不是写×而是*例如int c a * b;得到20所以*表示乘法。除法C 用/表示除法。int c a / b;就是10 ÷ 2 5所以c 58. 一个很重要的坑整数除法看这个int a 5; int b 2; int c a / b;数学上5 ÷ 2 2.5但 C 这里得到2不是2.5为什么因为a是intb也是int。两个整数相除时C 会进行整数除法。小数部分会被舍掉。所以5 / 2得到2不是四舍五入而是小数部分直接不要。9. 如果我要得到 2.5 呢可以写double a 5.0; double b 2.0; double c a / b;结果2.5所以你以后做机器人计算时一定要警惕int和double的区别。比如你在算速度距离 / 时间如果全部写成整数可能会造成精度丢失。10. 看一个机械臂小例子假设机械臂关节当前位置double current_angle 20.0;目标位置double target_angle 50.0;我们想算还差多少度可以double error target_angle - current_angle;代入50.0 - 20.0得到30.0因此error 30.0;以后学 PID 的时候你会经常看到这种error target - current;所以你现在学的减法将来会直接进入控制算法。11. 完整程序逐行看#include iostream int main() { double current_angle 20.0; double target_angle 50.0; double error target_angle - current_angle; std::cout error std::endl; return 0; }逐行#include iostream准备输入输出工具。int main()程序从主函数开始。double current_angle 20.0;创建小数变量current_angle保存当前角度20.0。double target_angle 50.0;创建小数变量target_angle保存目标角度50.0。double error target_angle - current_angle;计算50 - 20得到30然后存进error最后std::cout error std::endl;输出3012. 这一课先学到这里现在做 4 道很小的题。第 1 题int a 8; int b 3; int c a b;c是多少第 2 题double angle 45.5;这里double angle 45.5分别代表什么第 3 题int a 5; int b 2; int c a / b;最后c ?第 4 题假设机械臂double target 60.0; double current 25.0; double error target - current;最后error ?你下一条如果仍然说直接给标准答案并进入下一课我就会给出答案然后直接开始第 3 课运算符、赋值、/--以及和的区别。