C++ 基础入门 - 第一章
什么是变量
在 C++ 里,定义一个变量通常长这样:
int age = 18;
当然,也可以先声明,后赋值:
int score;
score = 95;
变量的基本类型
C++ 里的数据不是都长一个样子。
有的数据是整数,有的是小数,有的是字符,有的是真假值。为了让编译器知道你要存什么,C++ 提供了基本类型。
最常见的几种如下。
- 整数类型 int
int 用来保存整数,比如年龄、人数、数量、年份。
int year = 2026;
int students = 42;
int temperature = -5;
这里面没有小数点,都是整数。
- 浮点类型 double
double 用来保存带小数的数据,比如身高、体重、圆周率近似值。
double height = 175.5;
double price = 19.99;
double pi = 3.1415926;
为什么很多时候推荐用 double,而不是 float
因为 double 的精度通常更高,初学阶段更省心。
- 字符类型 char
char 用来保存单个字符,注意是单个,不是一串文字。
char grade = 'A';
char ch = 'x';
字符要用单引号包起来。
- 布尔类型 bool
bool 用来保存真假,只有两个值:true 和 false。
bool isPassed = true;
bool isRainy = false;
它常用于条件判断,比如“是否及格”“是否下雨”“是否登录成功”。
- 字符串 string
严格来说,string 不是 C++ 的内建基本类型。
它用来保存一整串文字。
#include <string>
string name = "Alice";
string city = "Tokyo";
字符串要用双引号包起来。
单引号是给 char 用的,双引号是给 string 用的。
- 不同类型的对比
#include <iostream>
#include <string>
using namespace std;
int main() {
int age = 20;
double height = 172.8;
char grade = 'A';
bool isStudent = true;
string name = "Liu";
cout << "姓名: " << name << endl;
cout << "年龄: " << age << endl;
cout << "身高: " << height << endl;
cout << "等级: " << grade << endl;
cout << "是否是学生: " << isStudent << endl;
return 0;
}
如果你想让它显示成单词形式,可以这样写:
#include <iostream>
using namespace std;
int main() {
bool isStudent = true;
cout << boolalpha << isStudent << endl;
return 0;
}
变量的初始化
定义变量时,最好立刻给它一个初始值。
比如:
int count = 0;
double salary = 0.0;
char choice = 'N';
bool found = false;
为什么要这样做
因为未初始化的变量可能带着一堆莫名其妙的旧值,这会让程序出现很难排查的问题。
什么是表达式
表达式可以理解成“会算出一个结果的东西”。
比如:
3 + 5
age + 1
price * count
x > y
3 + 5 的结果是 8。
x > y 的结果是 true 或 false。
表达式不一定非得写数字,也可以由变量和运算符组成。
常见运算符
- 算术运算符
+ // 加
- // 减
* // 乘
/ // 除
% // 取余
例子:
int a = 10;
int b = 3;
cout << a + b << endl; // 13
cout << a - b << endl; // 7
cout << a * b << endl; // 30
cout << a / b << endl; // 3
cout << a % b << endl; // 1
这里要特别注意:
如果两个操作数都是整数,a / b 得到的也是整数部分。
也就是说,10 / 3 在这里不是 3.3333,而是 3。
如果想得到小数结果,可以这样写:
double result = 10.0 / 3;
cout << result << endl;
- 赋值运算符
最常见的赋值运算符是 =。
int x = 5;
x = 8;
此外还有一些简写形式:
x += 2; // 等价于 x = x + 2;
x -= 1; // 等价于 x = x - 1;
x *= 3; // 等价于 x = x * 3;
x /= 2; // 等价于 x = x / 2;
- 比较运算符
比较运算符用来判断两个值之间的关系,结果是 true 或 false。
== // 是否相等
!= // 是否不等
> // 是否大于
< // 是否小于
>= // 是否大于等于
<= // 是否小于等于
例子:
int score = 85;
cout << (score >= 60) << endl;
输出结果是 1,表示条件成立。
- 逻辑运算符
逻辑运算符常用于组合多个条件。
&& // 与
|| // 或
! // 非
例子:
int age = 20;
bool hasTicket = true;
cout << (age >= 18 && hasTicket) << endl;
这表示:年龄至少 18 岁,并且有票,两个条件都满足才行。
自增和自减
C++ 里有两个很常见的小操作:
++x; // 自增
--x; // 自减
或者:
x++;
x--;
它们都和加 1、减 1 有关。
简单记住:
x++ 和 ++x 最终都会让 x 增加 1。
在单独成句时,它们效果看起来一样。
int x = 5;
x++;
cout << x << endl; // 6
不过如果它们放进更复杂的表达式里,前置和后置会有区别,现阶段不必了解太深。
什么是函数
函数的意义有三个:
- 减少重复代码。
- 让程序结构更清晰。
- 让每一部分代码只负责一件事,更容易维护。
- 函数最基本的样子
返回类型 函数名(参数列表) {
函数体
}
比如:
int add(int a, int b) {
return a + b;
}
这段代码表示定义了一个叫 add 的函数。它接收两个整数参数 a 和 b。它返回一个整数结果,也就是两者之和。
- 函数调用
定义好函数后,就可以在 main 中使用它。
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 5);
cout << "结果是: " << result << endl;
return 0;
}
程序会输出:
结果是: 8
- 理解参数和返回值
参数相当于把原材料交给函数。
返回值相当于函数加工后交回来的成品。
double square(double x) {
return x * x;
}
它接收一个小数 x,返回它的平方。
调用方式:
double area = square(3.5);
cout << area << endl;
- 没有返回值的函数
有些函数只负责做事,不负责交回结果。这时返回类型为 void。
#include <iostream>
using namespace std;
void greet() {
cout << "欢迎进入 C++ 世界" << endl;
}
int main() {
greet();
return 0;
}
这里 greet 函数只是输出一句话,没有返回具体数值。
- 为什么要学会拆函数
初学者很容易把所有代码都塞进 main 里。这样短程序还行,一旦程序长起来,就会乱成一锅粥。
把不同任务拆成函数,代码会清爽很多,也便于维护。
来看一个例子:
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
void printLine() {
cout << "----------------" << endl;
}
int main() {
int x = 10;
int y = 4;
printLine();
cout << "和: " << add(x, y) << endl;
cout << "差: " << subtract(x, y) << endl;
printLine();
return 0;
}
你会发现,main 看起来已经很像“流程总控室”了。
而真正干活的细节,被分配给了不同函数。
案例练习
例子一:交换零花钱预算
这个例子巩固变量、表达式和函数。
#include <iostream>
using namespace std;
int totalMoney(int breakfast, int lunch, int dinner) {
return breakfast + lunch + dinner;
}
int main() {
int breakfast = 6;
int lunch = 18;
int dinner = 15;
int total = totalMoney(breakfast, lunch, dinner);
cout << "今天总预算是: " << total << " 元" << endl;
return 0;
}
例子二:判断是否及格
这个例子巩固 bool、比较表达式和函数。
#include <iostream>
using namespace std;
bool isPass(int score) {
return score >= 60;
}
int main() {
int score = 78;
cout << boolalpha << isPass(score) << endl;
return 0;
}
例子三:计算长方形面积
这个例子巩固 double 和返回值。
#include <iostream>
using namespace std;
double rectangleArea(double length, double width) {
return length * width;
}
int main() {
double length = 5.2;
double width = 3.8;
double area = rectangleArea(length, width);
cout << "面积是: " << area << endl;
return 0;
}
例子四:输出个人信息
这个例子把多种类型放在一起。
#include <iostream>
#include <string>
using namespace std;
void printProfile(string name, int age, double height) {
cout << "姓名: " << name << endl;
cout << "年龄: " << age << endl;
cout << "身高: " << height << " cm" << endl;
}
int main() {
printProfile("Xiao Liu", 20, 176.5);
return 0;
}
初学者最容易犯的错误
忘记分号
int age = 18
cout << age << endl;
C++程序每行结束的标识是 ;。
混淆单引号和双引号
char ch = 'A';
string name = "Alice";
单个字符用单引号,一串文字用双引号。
整数除法结果和想象不一样
cout << 5 / 2 << endl;
结果是 2,不是 2.5,因为运算类型由参与运算的操作数决定。
继续练习
练习 1
定义两个整数变量 a 和 b,值分别为 12 和 7,输出它们的和、差、积。
#include <iostream>
using namespace std;
int main() {
int a = 12;
int b = 7;
cout << "和: " << a + b << endl;
cout << "差: " << a - b << endl;
cout << "积: " << a * b << endl;
return 0;
}
练习 2
定义一个函数,接收一个整数,返回它是否为偶数。
#include <iostream>
using namespace std;
bool isEven(int n) {
return n % 2 == 0;
}
int main() {
cout << boolalpha << isEven(8) << endl;
cout << boolalpha << isEven(5) << endl;
return 0;
}
练习 3
定义一个函数,接收半径,返回圆的面积。
#include <iostream>
using namespace std;
double circleArea(double r) {
return 3.1415926 * r * r;
}
int main() {
cout << circleArea(2.0) << endl;
return 0;
}
练习 4
定义一个字符串变量保存名字,一个整数变量保存年龄,然后输出一句完整的话。
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Liu";
int age = 20;
cout << "大家好,我叫 " << name << ",今年 " << age << " 岁。" << endl;
return 0;
}
本章小结
- 变量负责记住数据。
- 基本类型决定数据长什么样。
- 表达式负责算出结果。
- 语句负责推动程序执行。
- 函数负责把重复逻辑打包起来,提升代码的组织性。