C++|变量
前言
在C++编程中,需要用到很多种变量
本文将详谈几种常见变量
如有错误,欢迎指出
零、变量格式
- 定义并赋值
数据类型 变量名=值;
- 定义
数据类型 变量名;
- 赋值
变量名=值;
- 输入
cin>>变量名;
- 输出
cout<<变量名;
一、数字数据类型
-
如图所示,虽然 C++ 提供了许多数据类型,但在最广泛的意义上只有两个:数字和字符。数字数据类型可直接比较,分为两类:整数和浮点数。
-
为数字变量选择最佳数据类型的主要考虑因素如下:
- 变量是需要保存整数还是浮点数值;
- 变量需要存储的最大数和最小数;
- 变量是需要保存符号(正数和负数)还是只需要保存无符号(只有 0 和正数)数字;
- 存储在变量中的值所需的小数位数精度;
1.整型数据类型
- 如图2所示,C++ 有 8 种不同的数据类型用于存储整数。它们拥有的存储数据的内存字节和可以存储的数值范围是不一样的。数据类型可以容纳的字节数称为其大小。一般来说,数据类型的大小越大,那么它可以容纳的值的范围越大。
这里我们挑选最常用的 int 和 long long 讲
1、int
取值范围
C++中,int占用4字节,32比特,数据范围为-2147483648~2147483647
简单来说,就是十位以下的整数用int类型
2、long long
对于小点的数字,int足够了。
但万一数大了呢?
像1,145,141,919,810这样的数字,int很显然是不够的
这时候,就需要long long 类型了
取值范围
C++中,long long占用64比特,数据范围为-9223372036854775808~9223372036854775807
简单来说,就是十位以上的整数用long long类型
注:long long消耗的内存是int的2倍,long long的运算速度比int慢得多,所以能用int解决能满足有效输出时,尽量不要使用long long。
3、高精度
在一些题目中,往往会出现一些天文数字,
比如114514114514114514114514114514114514
这时候,就需要使用高精度了。
高精度算法:属于处理大数字的数学计算方法,是用计算机对于超大数据的一种模拟加,减,乘,除等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。
高精度数是通过字符数组(char[ ])或 字符串(string), 将一个大数字拆分为若干位从而储存的。
由于网上教程很多,不多叙述
推荐
2.浮点型数据类型
- C++中有三种浮点类型
- 按照精度的不同划分如下:
(1)float: 单精度类型 7位数
(2)double: 双精度类型 15位数
(3)long double: 长双精度类型 19位数
在使用这一类数据类型时,记住“越小越好”,能用float就用,最好不用long double
二、字符数据类型
C++不但可以处理数字类型的值,也可以处理字符
字符指的是英文字母及各种符号、数字,通过ASCII码存储
常见的字符类型有char与string。
1.ASCII码
ASCII码是基于拉丁字母的一套电脑编码系统,
计算机根据输入的字符(图形)以对应的ASCII码值存储在电脑中。
- 因为ASCII码值(整数)与字符(字)挂钩,
所以将字符(非数字)赋值给整数类型(如int),
默认为将对应的ASCII码值赋值给整数类型。
例如
int a='A';
== //因为A的ASCII码为65
int a=65;
2.char
char代表一个单独的字符。
由于是以输入的字符(图形)以对应的ASCII码值存储在电脑中的,
在比较大小时是以ASCII码值比较。
- 例如
- 'a' < 'b' 返回1,因为a的ASCII码是97,b的ASCII码是98
- 'a' < 'A' 返回0,因为a的ASCII码是97,A的ASCII码是65
注:1与0在此为布尔型,下文会讲。
3.string
string是字符串类型,相当于由n个char型字符组成。
与字符数组(char[ ])类似,但不需要知道字符个数,不必 担心内存是否足够。
因此,常用于存储一些天文数字(高精度)。
使用时需要头文件<string>
,并配备一系列函数。
string常用函数用法总结
三、布尔型(bool)
这是一种特殊的数据类型,只有两个值:1(真)和 0(假)
例如
//输入x,判断x是否为素数。若是,则输出真(1),否则输出假(0)。
int x;
cin>>x;//输入
bool a=1;//默认为是
for (int j = 2; j <= sqrt(x); j++)
{
if (x % j == 0)
{
a=0;//有因数则不是,为假。
}
}
cout<<a<<endl;//输出