二、数据类型
存在意义:给变量分配合适的内存空间。C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存
2.1 整型
作用:整型变量表示的是整数类型的数据
C++中能够表示整型有以下几种方式,区别在于所占同:
- short(短整型):2字节 (-32768~32767)
- int(整型):4字节 (-2147483648~2147483647)
- long(长整型):4字节(-2147483648~2147483647)
- long long(长长整型):8字节
2.2 sizeof关键字
作用:利用sizeof关键字可以统计数据类型所占内存大小
语法:sizeof(数据类型 / 变量)
示例:可以统计出各种数据类型的字节长度是多少
#include<iostream>
using namespace std;
int main(){
//整型:short:2 int:4 long:4 long long: 8
//可以利用sizeof求出数据类型占用内存大小
//语法:sizeof(数据类型 / 变量) 如:
short mun1 = 10;
cout<< "short占用内存空间为:" <<sizeof(short) << endl;
int mun2 = 10;
cout<< "int占用内存空间为:" <<sizeof(int) << endl;
long mun3 = 10;
cout<< "long占用内存空间为:" <<sizeof(long) << endl;
long long mun4 = 10;
cout<< "long long占用内存空间为:" <<sizeof(long long) << endl;
return 0;
}
整型结论:short<int<=long<=long long
2.3 实型(浮点型)
作用:用于表示小数
浮点型变量分为两种:
- 单精度float
- 双精度double
两者的区别在于表示的有效数字范围不同。
示例:
#include<iostream>
using namespace std;
int main() {
//单精度 float
//双精度 double
float f1 = 3.14f; //习惯单精度的数字后加f。
cout << "f1=" << f1 << endl;
double d1 = 3.14;//双精度不用数字后带字母。
cout << "d1=" << d1 << endl;
//可以用sizeof计算出两个精度的字节长度
cout << "float占用内存空间为:" << sizeof(float) << endl;//4字节
cout << "double占用内存空间为:" << sizeof(double) << endl;//8字节
//科学计数法表示及计算方法
float f2 = 3e2;//3e2表示3*10^2;
cout << "f2= " << f2 << endl;
float f3 = 3e-2;//3e-2表示3*0.1^2;
cout << "f3= " << f3 << endl;
return 0;
}
2.4 字符型
作用:字符型变量用于显示单个字符
语法: char ch = 'a';
- 注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号
- 注意2:单引号内只能有一个字符,不可以是字符串
- c和c++中字符型变量只占用1字节。
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCLL编码放入到存储单元。
示例:
#include<iostream>
using namespace std;
int main() {
//1. 字符型变量创建方式
char ch = 'a';
cout << ch << endl;
//2. 字符型变量所占内存大小
cout << "char字符型变量所占内存:" << sizeof(char) << endl;//1字节
//3. 字符型变量常见错误
//char ch2 = "b";//创建字符型变量时,要用单引号
//char ch2 = 'abcdef';//创建字符型变量时,单引号内只能有一个字符
//4. 字符型变量对应ASCLL编码
cout << (int)ch << endl;//(int)是强制转为十进制 a为97 b为98 A为65 B为66
return 0;
}
2.5 转义字符
作用:用于表示一些不能显示出来的ASCLL字符
现阶段我们常用的转义字符有:\n \\ \t
示例:
#include<iostream>
using namespace std;
int main() {
//换行符 \n
cout << "hello world\n";
//反斜扛 \\
cout<<"\\"<<endl;
//水平制表符 \t 作用可以整齐输出字符
cout << "aaa\thello world" << endl;//水平制表符一共占8个字符。aaa和hello之间空5格,aaa占了3格。
cout << "aaaaa\thello world" << endl;
cout << "aa\thello world" << endl;
cout << "aaaa\thello world" << endl;
return 0;
}
2.6 字符串型
作用:用于表示一串字符
两种风格:
-
C风格字符串:
char 变量名[] = "字符串值"
-
C++风格字符串:
string 变量名 = "字符串值"
示例:
#include<iostream>
#include<string> //用C++风格字符串时,要包含这个头文件。
using namespace std;
int main() {
//1. C风格的字符串 注意:C风格的字符串要用双引号括下来
char str1[] = "hello world";//和字符型的区别是多了个[];还有是双引号。
cout << str1 << endl;
//2. C++风格的字符串
//包含一个头文件: #include<string> 否则报错。
string str = "hello world";
cout << str << endl;
return 0;
}
2.7 布尔类型 bool
作用:布尔数据类型代表真或假的值
bool类型只有两个值:
- true ---真(本质是1)
- ralse --- 假(本质是0)
bool类型占1个字节大小
#include<iostream>
using namespace std;
int main() {
//1. 创建bool数据类型
bool flag = true;//true代表真
cout << flag << endl;
flag = false;//false代表假
cout << flag << endl;
//本质上 1代表真 0代表假
//2. 查看bool类型所占内存空间
cout << "bool类型所占内存空间: " << sizeof(bool) << endl;
return 0;
}
2.8 数据的输入
作用:用于从键盘获取数据
关键字:cin
语法: cin >> 变量
#include<iostream>
#include<string> //C++风格字符串的头文件,否则报错。
using namespace std;
int main() {
//1. 整型
int a = 0;
cout << "请给整型变量a赋值: " << endl;
cin >> a;
cout << "整型变量a= " << a << endl;
//2. 浮点型
float f = 3.14f;
cout << "请给浮点型变量a赋值: " << endl;
cin >> f;
cout << "浮点型变量f= " << f << endl;
//3. 字符型
char ch = 'a';
cout << "请给字符型变量ch赋值: " << endl;
cin >> ch;
cout << "字符型变量ch= " << ch << endl;
//4. 字符串型
string str = "hello";
cout << "请给字符串型变量str赋值: " << endl;
cin >> str;
cout << "字符串型变量str= " << str << endl;
//5. 布尔类型
bool flag = false; //非0的值,都代表真。
cout << "请给布尔型变量flag赋值: " << endl;
cin >> flag;
cout << "布尔型变量flag= " << flag << endl;
return 0;
}