C++| C++ 入门教程(二)基本数据类型
2 数据类型
2.1 整型
C++ 中能够表示整型的类型有大概四种,区别在于所占空间的不同:
数据类型 | 占用空间(单位:字节) |
---|---|
short | 2 |
int | 4 |
long | Windows(4), Linux(4), 64位系统(8) |
long long | 8 |
2.2 sizeof 关键字
作用:可以统计一个数据类型占用的空间大小。
语法:
sizeof(数据类型/变量)
单位:字节根据之前的实验,sizeof 关键字不仅可以统计基本数据类型所占的空间大小,结构体、类都是可以通过 sizeof 来进行判定的。至于对于类中的静态对象、方法等占用空间是怎么计算的。可以先留一下,之后再看。2.3 浮点型
浮点型变量分为两种:float, double
数据类型 | 占用空间(单位:字节) | 有效数字范围 |
---|---|---|
float | 4 | 7位 |
double | 8 | 15-16位 |
默认情况下,输出一个小数,会显示六位有效数字。
表示小数的两种方式:
- 小数点计数法:即使用小数点来表示,类似于3.14159之类的。
- 科学计数法:类似于3e2,通过 e 来分割。e 的前面是有效数字,后面是
作用:显示单个的字符。
我的理解是,虽然 char 类型中存储的数据本质是 ASCII 码,但是在进行输出的时候,一旦计算机识别出来这个数据是 char 类型,则会把他当成字符本身进行输出。所以 char 本身是可以像一般的数据一样加减的。语法:
char ch = 'a';
有两点注意:一是字符需要用单引号 '' 扩起来,二则是单引号中只能放进一个字符。
通过强制转换,可以输入 ASCII 码,或者输出 ASCII 码。
输出 ASCII 码 可以将需要输出 ASCII 码的字符转换为整型,然后输出。
int main() {
char ch = 'A';
cout << (int)ch << endl;
return 0;
}
输入 ASCII 码 ASCII 码是可以直接输出的,像这样:
int main(){
char ch = 97;
cout << ch;
return 0;
}
这样就会输出一个 a。
【C++| C++ 入门教程(二)基本数据类型】如果我们希望通过键盘输入一个 ASCII 码,然后转换为字符的话,就不行了。因为键入 ASCII 码会被当成是字符,比如我们键入97,那么9会被当成第一个字符,被键入进输入流。
这时我们需要使用整型来获得输入,再强制转换成 char 型字符。
int main(){
int ch;
cin >> ch;
cout << (char)ch;
return 0;
}
重要的 ASCII 码 A 65
a 97
所有的大写字母 + 32就会变成小写字母。
2.5 转义字符
作用:用过反斜杠 '\' 表示一些不能显示出来的 ASCII 字符
比较常用的转义字符:
\n | 换行符 |
---|---|
\\ | 反斜杠 |
\t | 水平制表 |
表示一整串字符,一共有两种风格的字符串。
C 风格字符串 语法:
char variableName[size] = "……";
这里有两种写法,可以指定字符串的 size,也可以空着 size,这样系统就会自动统计后面的字符串长度,获得一个 size(注意:这里并不是没有,而是系统自动获取了。)
举例:
int main(){
using namespace std;
char hello[] = "Hello, World!";
cout << hello << endl;
cin.get();
return 0;
}
值得一提的是,sizeof 关键字对于 C 风格字符串也是有效的。如果让系统自动统计长度,则会得到字符串的长度+1(因为字符串最后会有一个空字符)。但是如果指定了字符串的大小,则会得到字符串的大小。
C++ 风格字符串 语法:
string stringName = "……"
需要包含一个的头文件
全自动生成,而且各种操作更方便一些。
#include
using namespace std;
int main() {
string str = "Hello, World!";
cout << str << '\n';
return 0;
}
2.7 布尔类型
作用:表示真或者假
只有两个值:true false 但是其实本质就是1和0
语法:
bool variableName = true/false
布尔类型的值输出时,默认输出的就是0或1,这一点和其他的语言是不一样的。
2.8 数据的输入
作用:通过键盘输入数据
语法:
cin >> variableName;
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 赢在人生六项精进二阶Day3复盘
- 2019年12月24日
- 陇上秋二|陇上秋二 罗敷媚
- 一百二十三夜,请嫁给我
- 迷失的世界(二十七)
- 我要我们在一起(二)
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)