C++的变量,输入,输出
同其它编程语言一样,C++程序要想与用户进行交互,必须有输出,输入,还有存储数据的变量。接下来我们一起来看看在C++中如何进行输入输出,以及变量的存储吧。
输出
在编程业界有个不成文的规定,就是学习一门编程语言,第一个写出来的程序必须得是输出“Hello World”
这句话,同时这句话也预示着接下来的学习会一帆风顺,那么我们也来一起写我们的第一个C++程序来输出这句话吧。
#include <iostream>
using namespace std;
int main(){
cout << "Hello world" << endl;
return 0;
}
如果有过C语言的基础,那么这段代码你一定能看懂个八九不离十,没有也没关系,接下来我会逐行解释这段代码。
#include <iostream>
- 这是一个预处理指令,它告诉编译器在编译这个 C++ 程序时包含标准输入输出流的头文件
<iostream>
。这个头文件中包含了输入输出相关的类和对象,如cout
和cin
,用于进行标准的输入和输出操作。我们写程序一般都会包含这个头文件,在C语言中包含输入输出标准的头文件叫<stdio.h>
。
using namespace std;
- 这行代码使用了
std
命名空间。std
是 C++ 标准库中使用的命名空间,其中包含了许多标准的类、函数和对象。使用using namespace std;
可以让我们在代码中直接使用std
命名空间中的元素,而不需要每次都加上std::
前缀,如我们在下面使用cout
,endl
以及后面输入会用到的cin
都不用写成std::cout
类似的写法。但在大型项目中,为了避免命名冲突,一般不推荐使用这种方式,而是使用std::
前缀。
int main(){
- 这是 C++ 程序的入口点。
main
函数是每个 C++ 程序都必须有的函数,程序从这里开始执行。int
表示这个函数返回一个整数类型的值。在这里强调一点,我们使用的vs2022或者是clion这种IDE,创建一个项目里面只允许有一个main
函数,也就是说无论有多少个.cpp
源文件,这些文件里面只能有一个main
函数,因为main
函数是一个项目的入口点,程序执行是从main
函数开始执行,如果有多个main
函数则会报错,这点和python
等编程语言不同。如果是使用Dev-Cpp这类可以单文件编译运行的IDE则不存在这个问题。那么我们如果想在一个项目里面运行不一样的程序,我们可以把前一个main
函数命名为main1
函数,后面main2
,main3
以此类推,想运行哪个文件就把哪个文件里面包含main
函数,但是在编译时所有的源文件都会进行编译,所以其它源文件中有错误,同样会导致编译失败。
cout << "Hello world" << endl;
cout
是std
命名空间中的输出流对象,用于输出数据。<<
是输出运算符,它将后面的数据发送到cout
中。"Hello world"
是一个字符串常量,将被输出。endl
是一个操纵符,用于插入一个换行符并刷新输出缓冲区,使得输出的内容立即显示在屏幕上。
return 0;
}
- 这行代码表示
main
函数的结束,并返回一个整数 0。在 C++ 中,返回 0 通常表示程序正常结束。根据约定,程序成功执行并正常结束时返回 0,而其他非零值可以表示程序出现错误或异常情况。
那么这就是我们C++中的输出,下面我们来一起看看变量。
变量
变量,在有的教材中也叫字面量,是差不多的意思,就是使用一个名字来"存储"一个数据,这里的存储打个引号,因为实际上它只是指向内存中存储数据,并不是真正意义上的存储。
一、变量的定义
在 C++ 中,变量是用于存储数据的容器,它们在程序执行期间可以保存不同类型的值。变量在使用前必须先声明,声明变量的基本格式如下:
<数据类型> <变量名>;
例如:
int age;
这里声明了一个名为 age
的变量,其数据类型为 int
(整数)。
二、变量的数据类型
C++ 有多种数据类型,以下是一些常见的数据类型:
1. 基本数据类型
-
整数类型:
int
:通常用于存储普通的整数,其大小一般为 4 个字节,范围通常为-2147483648
到2147483647
。short
:短整型,通常占用 2 个字节,范围相对较小。long
:长整型,一般为 4 或 8 个字节,范围比int
可能更大。long long
:长长整型,通常为 8 个字节,可存储更大范围的整数。unsigned
修饰符:可以加在整数类型前面,用于存储无符号整数,即只存储非负整数,范围从 0 开始,例如unsigned int
。
-
浮点类型:
float
:单精度浮点数,通常占用 4 个字节,用于存储带有小数部分的数字,但精度相对较低。double
:双精度浮点数,一般占用 8 个字节,精度比float
高。long double
:更高精度的浮点数,占用空间更大,具体大小可能因编译器而异。
-
字符类型:
char
:用于存储单个字符,通常占用 1 个字节,存储字符的 ASCII 码值。例如:
char grade = 'A';
wchar_t
:宽字符类型,用于存储宽字符,通常用于存储 Unicode 字符,占用 2 或 4 个字节。
-
布尔类型:
bool
:用于存储布尔值,只能取true
或false
两个值。例如:
bool isTrue = true;
三、变量的初始化
变量可以在声明时初始化,也可以在声明后进行初始化。
-
声明时初始化:
int count = 0;
这里
count
变量在声明时被初始化为0
。 -
声明后初始化:
int score; score = 95;
先声明
score
变量,然后将其值初始化为95
。
四、变量的作用域
变量的作用域是指变量在程序中可见和可访问的范围。
1. 局部变量
在函数或代码块(如 if
、for
等)内部声明的变量是局部变量,它们只能在该函数或代码块内使用。例如:
void exampleFunction() {
int localVar = 10; // 局部变量
// 这里可以使用 localVar
}
// 这里不能使用 localVar
2. 全局变量
在所有函数和代码块之外声明的变量是全局变量,它们可以在整个程序中被访问(从声明位置开始)。例如:
int globalVar = 20; // 全局变量
void anotherFunction() {
// 这里可以使用 globalVar
}
五、变量的命名规则
- 变量名可以由字母、数字和下划线组成。
- 变量名必须以字母或下划线开头,不能以数字开头。
- C++ 是区分大小写的,所以
age
和Age
是不同的变量。 - 变量名不能是 C++ 的关键字,例如
int
、if
、for
等不能作为变量名。
六、变量的存储类别
-
自动存储类别(auto):
- 这是默认的存储类别,局部变量通常是自动存储类别,它们在函数或代码块开始时创建,在结束时销毁。
auto int temp = 5; // auto 关键字在 C++11 之后可用于自动类型推断,这里可直接写 int temp = 5;
-
静态存储类别(static):
- 用
static
关键字声明的变量在程序的整个生命周期内存在,并且只会初始化一次。
static int staticVar = 1;
- 静态局部变量在函数调用结束后不会销毁,下次调用函数时,其值仍然保留。
- 用
七、常量
常量是在程序运行期间其值不会改变的量。
-
使用
const
关键字:const int MAX_VALUE = 100;
这里
MAX_VALUE
的值在程序运行期间不能被修改。
八、引用
引用是 C++ 的一个重要特性,它为已存在的变量提供了一个别名。
-
声明引用:
int num = 5; int& ref = num; // ref 是 num 的引用
对
ref
的操作等同于对num
的操作,例如:ref = 10