第 2 课
变量与输入
一句话答案:变量是内存里一个有名字的盒子,装着某一个类型的一个值。先声明(类型 + 名字,int age;),再赋值(age = 20;),从此这个名字就是那个值。
四个类型够写绝大多数新手代码
| 类型 | 装什么 | 例子 |
|---|---|---|
int | 整数 | int score = 95; |
double | 小数 | double price = 19.99; |
char | 单个字符,单引号 | char grade = 'A'; |
bool | 真或假 | bool passed = true; |
类型决定盒子占几个字节、里面的比特怎么读。这就是 'A' 和 "A" 不同的原因:单引号是 char,双引号是字符串字面量(完整解释)。
声明、赋值、打印
#include <iostream>
using namespace std;
int main() {
int score = 95;
double price = 19.99;
char grade = 'A';
bool passed = true;
cout << "score: " << score << endl;
cout << "price: " << price << endl;
cout << "grade: " << grade << endl;
cout << "passed: " << passed << endl; // bool 打印成 1 / 0
return 0;
}
最后一行是第一个意外:bool 打印成 1 或 0,不是 true/false。cout 默认就这么处理布尔值。
用 cin 读输入
cin >> name 从键盘读一个值。>> 箭头指向变量,正好帮记方向:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a;
cin >> b;
cout << "sum = " << a + b << endl;
return 0;
}
把输入框里的数字改改:这不是计算器应用,只是四行算术恰好跑在浏览器里。
整数除法,再说一遍
最常见的数值意外:int / int 还是 int,小数直接丢。
#include <iostream>
using namespace std;
int main() {
int a = 7, b = 2;
cout << a / b << endl; // 3 —— 小数被丢弃
cout << (double)a / b << endl; // 3.5 —— 有一边是 double
return 0;
}
负数与 % 的完整解释:为什么 7 / 2 是 3。
这周一定会踩的坑
- 先用了再声明。C++ 从上往下读;在
int x;之前用它,是编译错误,不是零。 - 没初始化。
int sum; sum += 5;是把 5 加到内存里原有的垃圾值上。永远写int sum = 0;。 - 溢出。
int到约 21 亿就停,20!装不下。本站的阶乘题就是故意让你撞墙。 - 给 char 用双引号。
char c = "A";报错,要写'A'。