C++变量与类型
类型
在学习本节后续内容前,我们需要先了解一下什么是类型。如果你之前有学过其他编程语言或许你对类型并不陌生,但是我还是要在这里说明一下下~
玩过王者荣耀的小伙伴应该都知道游戏里有射手,法师,刺客等,而这里的射手、法师这些就可以看做是一种类型,我们看英雄的时候肯定会关注它是什么类型,甚至说到英雄名字的时候就知道它是什么类型的英雄。计算机编程语言也是一样,我们知道程序在计算机里面都是以二进制0和1读取执行的,那么数字2021,一句话hello world怎么表示?如果只用0和1那会是一场无尽的恶梦。幸好前辈们早就发现了这个问题,所以就用了类型这个东西来规范这些东西,比如数字520定义为整形类型,字母a定义为字符类型等等。
通俗来说,类型就是用来表示一类相同特征的东西。
基本内置类型
前面谈到到了类型,现在来了解下C++的基本内置类型。所谓内置类型,就是C++语言设计者们为我们预先定义好的一组类型,我们可以直接使用。下表列举了部分基本C++内置类型
类型 | C++表示 | 例子 |
---|---|---|
布尔型 | bool | true false |
整型 | int | 123 2021 233 |
浮点型 | float | 124.00 7.777 |
字符型 | char | ‘a’ ‘b’ |
布尔型
布尔型只有两个值,用来表示真假,一个是true,表示真;另一个是false,表示假。
在C++中,任何非0的值都可以看做true(真),而0被看做false(假),这在判断真假的时候很有用。
比如2、24、-2都可以看做是真,而0才会被看做假。
布尔类型一般用来判断,比如判断1是否等于2,显然1不等于2,所以便是假,用false表示,反之便是真,用true表示。
整型
整型用来表示像123、456、-2、-24这种没有小数点的数字,整型又分为有符号整型和无符号整型。弄清楚这两个之前我们需要先了解什么是有符号,什么是无符号。
我们在学习数学的时候应该都知道,数字分为正数和负数,那么他们在书写上有什么不同呢?没错,负数的前面都有一个 “-” ,正数前面可以用 +“”,但是我们可以忽略不用书写。而C++这里有符号与无符号也可以这么理解,有符号整数可以表示+5也可以表示-5,因为数字前面有符号,但是无符号整型却只能表示5、6这种前面可以没符号的数字。总结下来就是:有符号整型可以表示正数、0和负数,无符号整型只能表示正数和0。
如果你想知道更多关于计算机中数字表示的奥秘,可以看看是小白哇写的博客:计算机中数的表示
整型在C++中还分为普通型(int)、短整型(short int)、长整型(long int)、超长整型(long long int)。普通整型表示的区间取决于你的计算机位数,因为普通整型int的长度等于计算机字长,如果是64位机器,那么它的范围就是-264 ~ 264 - 1。C++还规定普通整型(int)类型长度比短整型(short int)长度长,长整型(long int)最小长度比普通整型(int)长,超长整型(long long int)最小长度比长整型(long int)长。
C++定义了很多宏,其中有几个宏用来表示int long等类型的最大值
#include <iostream>
int main(void)
{
std::cout << "int类型最大值" << __INT_MAX__ << std::endl;
std::cout << "long类型最大值" << __LONG_MAX__ << std::endl;
std::cout << "long long类型最大值" << __LONG_LONG_MAX__ << std::endl;
std::cout << "short int类型最大值" << __SHRT_MAX__ << std::endl;
return 0;
}
运行结果:
int类型最大值2147483647
long类型最大值9223372036854775807
long long类型最大值9223372036854775807
short int类型最大值32767
浮点型
看完整型我们来聊聊浮点型。浮点型的数字是具有小数点的数,如12.34、1.414等。
这里可能会有一个疑惑,为什么叫做浮点类型而不叫其他类型,比如小数点类型呢?其实计算机把小数点类型分为两部分存储,一部分表示值,另一部分用来对数字放大缩小。比如3.14和31.4除了小数点未知不同外其他数字都相同,就可以把第一个数用0.314和10倍放大组成,而31.4则可以由0.314和100倍的放大组成,这里的第二部分的作用就是通过移动小数点位置来改变数字的大小。浮点也就是小数点的浮动了,所以叫做浮点数。
C++中表示一个浮点数有两种形式,一种就是同我们平时数书写小数是一样的,另一种就是“E表示法”。
E表示法:E表示法类似于数学上的科学计数法,但是有一定区别,形式上类似于 3.14E6(3.14e6) ,这里就等同于3.14与1000000相乘的结果。E表示法告诉计算机这个数字用浮点形式存储,就算E的前面没有小数点(如6E6 = 6.0E6 = 6.0x10^6)。
注意:
- E表示法数字间不能出现空格。
- E表示法更适合表示非常大和非常小的数。
- E表示法“E”后面不能接小数,且后面的数字为正表示相乘,为负表示相除。
C++中浮点类型的标识符主要有三个,一个是float,一个是double,还有一个long double。long修饰符在前面已经介绍过,在这里作用也是类似的。
同整数一样,C++也定义了很多宏来表示浮点型数据的最大和最小值,可以用下面的代码查看
#include <iostream>
int main(void)
{
std::cout << "float类型最大值: " << __FLT_MAX__ << std::endl;
std::cout << "double类型最大值: " << __DBL_MAX__ << std::endl;
std::cout << "long double类型最大值: " << __LDBL_MAX__ << std::endl;
return 0;