什么是变量?
变量是程序可操作存储区的名称(标识符) 。
**顾名思义,就是可以改变的量。**在C++中,变量就是存储数据的容器,不同类型的数据使用不同的变量进行存储。
比如,我们家里面有不同大小的杯子,平时喝水使用一次性杯子或者较小的水杯,因为一次性饮水量一般比较小。而长途旅行所带的保温水壶一般容量都比较大。根据需求不同,选择不同容量的装水容器。数据也是一样,要根据实际情况选择大小匹配的数据容器,如果选择容器过小,会导致数据溢出,如果选择容器过大,会导致空间浪费。
变量声明的语法格式
DataType 变量名;
例如:
int a; // 定义一个整型变量,即a这个变量只可以存储整型数据
当程序执行int a;
时,操作系统会在内存中随机选择一块空间,且名字是 a,此时这个空间所属于 a 这个变量,根据变量声明所在位置不同(比如main内部或者上面),a 的值为随机值或 0。
补充:
内存是一个线性的结构,程序在不运行的时候,比如一个 c++ 文件,并不会占用内存,当运行时,才会将数据加载到内存中,程序结束,内存数据释放。
常用单位转换:
1byte = 8bit
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
int 类型变量占 4 个字节。
int a = 1;
cout << sizeof(a) << " " << sizeof(123) << endl;
输出:
4 4
变量赋值
赋值号即 =,切记,这里是赋值,表示将 = 右边的值赋给 = 左边的变量,而并不是相等的意思。
int a;
a = 1;
a = 2;
a = 3; // 最终输出a的值为3,以最后一次的值为准。
int b = 2; // 声明变量同时直接赋值
注:同一作用域内,相同变量不可以重复声明
获取变量地址:&
int a = 123;
cout << a << endl << &a << endl;
输出:
123
0x7ffd4ba7d324
注:每次运行,变量地址可能都会发生变化。
比如,你打开了一个视频剪辑软件导出一个很大的视频,那么这个软件就会占用很多内存,同时,你还想打个网络游戏,但是电脑资源有限,打不开这个网络游戏,你只好暂时停止视频导出,将内存释放出来。之后打完游戏再导出视频,但是数据占用的内存已经不再是之前的内存了。(和之前内存相同的可能性极小)
标识符命名规范
首先,标识符命名要做到见词知意,比如游戏中有很多角色,每个角色名字我们都用 x、xx、xxx...,这样,程序会变得难以理解。
比如,用变量存储我方英雄生命值,被敌人子弹击中就减少 1,这个变量名可以用 life 存储,或者,用拼音 shengming 存储。
规则:由字母、数字和下划线组成的符号串。
补充:
- 不能使用 C++ 关键字
- 区分大小写
- 数字不能开头
变量交换
比如 变量 a 的值为1,变量 b 的值为2,将 b 的值赋给 a,可以表示成 a = b,然而之前 a 中的值就不存在了。因此需要定义第三方变量,比如 t,作为临时值提前保存 a 的原始值。
int a = 1, b = 2;
int t = a;
a = b;
b = t;
cout << a << " " << b << endl;
输出:
2 1
也可以使用 swap 函数进行交换:
int a = 3, b = 4;
swap(a, b);
cout << a << " " << b << endl;
输出:
4 3
复合运算符
int a = 1;
a += 1;
a *= 2;
cout << a << endl;
输出:
4
变量自增和自减
如果单独执行一行 i++ 或 ++i,都是自增 1,程序效果相同。
int i = 1, j = 3;
i++;
cout << i << endl;
++i;
cout << i << endl;
输出:
2
3
x = i++
,将 i 的值先赋给 x,然后 i 再自增,x = ++i
,将 i 的值先自增,然后再赋给 x。
int i = 1, j = 3;
int x = i++;
cout << x << " " << i << endl;
x = ++i;
cout << x << " " << i << endl;
输出:
1 2
3 3
练一练:对变量 j 进行自减操作。
cin输入数据
cin 可以让我们和计算机进行交互,我们可以向计算机输入数据,经由程序对数据进行处理,然后输出结果。
cin 读取数据时,数据之间可以通过空格或换行进行分隔。
分步展示:
常量
在编程中,常量是指在程序执行过程中其值不会发生变化的标识符。
**常量与变量相对,变量的值可以在程序执行过程中被改变,而常量的值是固定的、不可修改的。**以下是常见的几种常量:
1.整型常量:整型常量就是整数例如:1、2、-3、9 等;
2.实型常量:实型常量就是浮点数(带小数点的)例如:3.1、6.5、-6.123 等;
3.字符常量:字符型常量就是用单引号引起来的字符。例如 'b'、 'c' 等。
定义常量:
const 类型名 常量名 = 常量值; // 常量在定义同时必须进行初始化。
#define 常量名 常量值
使用符号常量名的好处:
1.增加了程序的可读性。比如大家见到了 PI 就知道它代表的是圆周率,定义符号常量名时尽量做到见词知意。
2.我们的程序中只要改动了 PI 的值程序中所有 PI 的值都会得到改变。
定义常量名时,通用习惯把常量名都写成大写!
const double PI = 3.1415926;
#define PI 3.1415926
闯关练习
电影票
参考程序:
#include <bits/stdc++.h>
using namespace std;
int main() {
int x;
cin >> x;
cout << x << " " << x * 10 <<endl;
return 0;
}
A+B问题
参考程序:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
int b;
cin >> a;
cin >> b;
cout << a+b << endl;
return 0;
}
交换值
参考程序:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
/*
int t = a;
a = b;
b = t;
*/
swap(a, b);
cout << a << " " << b << endl;
return 0;
}
鸡兔同笼
参考程序:
#include <iostream>
using namespace std;
int main() {
/*
鸡 a 兔 b
a + b = x 式子1
2 * a + 4 * b = y 式子2
2 * a + 2 * b = 2 * x 式子3
式子2 - 式子3 = 2 * b = y - 2 * x
*/
int x, y;
cin >> x >> y;
int b = (y - 2 * x) / 2;
int a = x - b;
cout << a << " " << b << endl;
return 0;
}
计算(a+b)×c的值
参考程序:
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << (a + b) * c << endl;
return 0;
}
[NOIP2017 普及组] 成绩
参考程序:
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << a * 0.2 + b * 0.3 + c * 0.5;
return 0;
}
课后作业
三个整数的和
参考程序:
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << a + b + c << endl;
return 0;
}
带余除法
参考程序:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a / b << " " << a % b << endl;
return 0;
}
计算(a+b)/c的值
参考程序:
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << (a + b) / c << endl;
return 0;
}