Appearance
L1-03 变量
在程序运行期间其值可以改变的量称为变量。变量是代码中最重要的元素。
一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念。
几乎所有程序都离不开变量。做饭之前要准备食材,写字画画之前要准备笔墨,刺绣之前要准备针线,我们写程序之前当然也要准备好相应的“素材”,这就是变量。
使用变量
在 C++ 语言中,要求对所有用到的变量作强制定义,也就是必须“先声明,后使用”。定义变量的一般形式是:变量类型 变量名表列。变量名表列指的是一个或多个变量名的序列。
c++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n; //声明一个变量,名字叫做n,n是一个整型变量
}
数据类型
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。
您可能需要存储各种数据类型(比如字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。
在上面的例子中,我们声明了一个整型变量
变量声明
变量一经声明就不能改变了。下面这段程序,编译就会报错。
c++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n; //声明一个变量,名字叫做n,n是一个整型变量
long long n; //再次声明
}
哪怕再次声明相同类型的变量,如下所示程序,也会报错。
c++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n; //声明一个变量,名字叫做n,n是一个整型变量
int n; //再次声明
}
可以连续声明多个变量。
c++
int main()
{
int n; //声明一个变量,名字叫做n,n是一个整型变量
int m; //声明一个变量,名字叫做m,m是一个整型变量
}
相同数据类型的变量,可以一起声明,中间用逗号隔开。
c++
int main()
{
int m, n; //声明2个整型变量,名字分别叫做m,n
}
变量名可以是单词
变量的名字可以不仅仅是一个字符,可以是单词、拼音,这样可以提高代码的可读性。
c++
int main()
{
int max, min; //声明2个整型变量,名字分别叫做max,min,用来保存最大值和最小值
变量赋值
直接赋值
赋值需要先声明变量,再将值赋给变量。
c++
int a, b;
a = 3;
b = 4;
不声明则无法通过编译。
c++
a = 3;
b = 4;
int a, b;
可以在声明的同时赋值。
c++
int a = 3, b = 4;
从其他变量赋值
故名思意,就是将其他变量的值付给当前变量。
c++
int a, b = 4;
a = b;
赋值还可以这样:
c++
int a, b = 4;
a = b + 3; //a = 7
还可以这样:
c++
int b = 4, a = -b; //a = -4
但是这样会编译错误,因为在对
c++
int a = -b, b = 4; //这样会错
从自己赋值
变量还可以通过自己以前的值,来进行赋值。
c++
int a = 4;
a = a + 1; //a = 5
a = a * 2; //a 从5变为10
上面的程序还可以这样写。
c++
int a = 4;
a += 1; //a = 5
a *= 2; //a 从5变为10
变量还可以通过 ++ 和 −− 进行赋值,其作用等同于 +=1 以及 −=1 。
c++
int a = 4;
a++; //a = 5
a--; //a = 4
++a; //a = 5
--a; //a = 4
单选题
可否使用一个常量对变量赋值?
A. 正确
B. 错误
答案
正确,可以使用一个常量对变量赋值;例如:a=10;
常见问题
变量名的拼写
凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用得正确。例如,如果在声明部分写了
c++
int student;
而在执行语句中错写成 statent 。如
c++
statent=30;
在编译时检查出 statent 未经定义,作为错误处理。输出“变量 statent 未经声明”的信息,便于用户发现错误,避免变量名使用时出错。
变量名与标识符
单选题
在 C++ 中下面哪个不是合法的变量名( D )。
A. sum
B. Student_name
C. BASIC
D. M.D.Joh
题解
变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。 1.只能由字母( A-Z , a-z ) 、数字(0-9)和下划线(\ _)组成。 2.不能数字开头。 3.不能用C++关键字来命名变量,以免冲突。 因此选D
用来标识变量、符号常量、函数、数组和类型等实体名字的有效字符序列称为**标识符 (identifier) **。简单地说,标识符就是一个名字。变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。
标识符只能由字母( A−Z
, a−z )、数字( 0−9 )和下划线( _)组成,第一个字符必须为字母或者下划线开头,不能用 C++ 关键字来命名变量,以免冲突。
下面是不合法的标识符和变量名:
M.D.John
, 123
, 3G64
, Ling li
, C++
, Zhang−ling
, U.S.A.
单选题
下面哪个是合法的变量名( C )。
A. $123
B. #3345
C. li_ling
D. Zhang-ming
题解
变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。 1.只能由字母( A-Z , a-z ) 、数字(0-9)和下划线(\ _)组成。 2.不能数字开头。 3.不能用C++关键字来命名变量,以免冲突。 因此选C
关键字
除了标识符的限制,变量名还不可以是 C++ 的关键字。例如:定义一个名为 int 的整型变量,就会出现编译错误。
c++
int int;
单选题
下面不是 C++ 关键字的是( C )。
A. int
B. for
C. child
D. public
题解
C++ 关键字常见关键字: char、double、else、float、if、int、long、namespace、new、public、return、switch、using、void、while
C++的关键字 | |||
---|---|---|---|
asm | else | new | this |
auto | enum | operator | throw |
bool | explicit | private | true |
break | export | protected | try |
case | extern | public | typedef |
catch | false | register | typeid |
char | float | reinterpret_cast | typename |
class | for | return | union |
const | friend | short | unsigned |
const_cast | goto | signed | using |
continue | if | sizeof | virtual |
default | inline | static | void |
delete | int | static_cast | volatile |
do | long | struct | wchar_t |
double | mutable | switch | while |
dynamic_cast | namespace | template |
注意大小写
在 C++ 中,大写字母和小写字母被认为是两个不同的字符。因此, sum
和 SUM
是两个不同的变量名。因此, sum
和 SUM
是两个不同的变量名。一般地,变量名用小写字母表示,与人们日常习惯一致,以增加可读性。
以下程序会出现编译错误。
c++
int sum;
SUM = 30;
头脑风暴
倒水问题
桌面上有
举个例子来看,比如
那么当
我们将所有水量大于等于
代码练习
课堂练习:启蒙练习-乘法
输入一个数
输入格式
输入一个数
输出格式
输出一个数,表示
输入样例
34
输出样例
102
数据范围
对于100%的数据,1<n≤2000。
样例解释
c++
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
cout << n * 3 << endl;
return 0;
}
看看这段代码有什么错误?
c++
#include<bits/stdc++.h>
using namespace std;
int main(){
cin >> n;
cout << 3 * n;
return 0;
}
给出的代码,其中变量 n 没有定义就使用了。因此在使用变量 n 之前,增加变量定义 int n; 即可。
课堂练习:启蒙练习-混合运算1
已完成
输入一个数n,请你输出 n 乘以 3 加 7 的值。
输入格式
输入一个数n。
输出格式
输出一个数,表示n*3+7的值。
输入样例
6
输出样例
25
数据范围
对于100%的数据,0<n≤50000。
样例解释
c++
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
cout << n * 3 + 7 << endl;
return 0;
}