【C++基础】数据类型
C++规定在创建一个变量或者产量时,必须要指定相应的数据类型,否则无法给变量分配内存空间
数据类型的存在意义:给变量分配合适的内存空间
整型
作用:整型变量表示的是整数类型的数据
在内存中的存储方式如下图所示:
C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:
数据类型 | 占用空间 | 取值范围 |
---|---|---|
short(短整型) | 2个字节 | (-215~215-1) |
int(整型) | 4个字节 | (-231~231-1) |
long(长整型) | Windows为4字节,Linux为4字节(32位),8字节(64位) | (-231~231-1) |
long long(长长整型) | 8个字节 | (-263~263-1) |
占的空间大小不同,导致取值范围也不一样,占用的空间越大,能表示的数字量的范围越广
int main() {
// 整型
// 1、短整型 -32768 ~ 32767
// short num1 = 10;
// short num1 = 32768; // 会输出 -32768
// 2、整型
int num2 = 10;
// 3、长整型
long num3 = 10;
// 4、长长整型
long long num4 = 10;
// cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << "num3 = " << num3 << endl;
cout << "num4 = " << num4 << endl;
system("pause");
return 0;
}
sizeof 关键字
作用:利用sizeof
关键字可以统计数据类型所占内存大小
语法:sizeof(数据类型/变量)
int main() {
// 整型:short(2个字节) int(4个字节) long(4个字节) long long(8个字节)
// 利用sizeof求出数据类型占用内存大小
// 语法:sizeof(数据类型/变量)
short num1 = 10;
cout << "short占用内存空间为:" << sizeof(short) << endl;
cout << "num1 占用内存空间为:" << sizeof(num1) << endl;
int num2 = 10;
cout << "int 占用内存空间为:" << sizeof(int) << endl;
long num3 = 10;
cout << "long 占用内存空间为:" << sizeof(long) << endl;
long long num4 = 10;
cout << "long long占用内存空间为:" << sizeof(long long) << endl;
// 整型大小比较
// short < int <= long <= long long
system("pause");
return 0;
}
整型大小比较:short < int <= long <= long long
实型(浮点型)
作用:用于表示小数
浮点型变量分为两种
- 单精度(float)
- 双精度(double)
两者的区别在于表示的有效数字范围不同
此处与整型数字不太一样,浮点数的有效数字还包括小数点后面几位
而整型的有效范围则不包括小数点之后的内容
浮点数的有效数字不仅指小数点后面的数字,小数点前面的整数部分也属于有效数字
比如:3.14,有3位有效数字
单精度浮点数在定义的时候,会在数字后面加上f
float f1 = 3.14f;
因为若不指明是float类型的话,编译器默认认为它是double类型,如下图所示:
将这个数存到f1
时,会将其进行转换,从double类型转换为float类型
输出时,默认会输出6位有效数字
表示小数还有一种方式:科学计数法
科学计数法,e
后面如果是正数,则代表 10,如果是负数,则代表 0.1
int main() {
// 科学计数法
float f2 = 3e2; // e 后面是正数
// 代表: 3 * 10 ^ 2,也就是300,且小数位都是0
cout << "f2 = " << f2 << endl; // 输出是300
float f3 = 3e-2; // e 后面是负数
// 代表:3 * 0.1 ^ 2,这样就是一个小数了,
cout << "f3 = " << f3 << endl; // 输出是300
// e后面是正数,代表 10
// e后面是负数,代表 0.1
system("pause");
return 0;
}
字符型
作用:用于显示单个字符
语法:char ch = 'a';
注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号
注意2:单引号内只能有一个字符,不可以是字符串
- C和C++中字符型变量只占用1个字节
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
int main() {
char ch = 'a';
cout << ch << endl;
cout << sizeof(char) << endl;
// ch = "abcde"; // 错误,不可以用双引号
// ch = 'abcde'; // 错误,单引号内只能引用一个字符
cout << (int)ch << endl; // 查看字符a对应到ASCII码
ch = 97; // 可以直接用ASCII给字符型变量赋值
cout << ch << endl;
system("pause");
return 0;
}
ASCII码大致分为两部分:
- ASCII 非打印控制字符:ASCII表上的数字0-31分配给了控制字符,用于控制像打印机等外围设备。
- ASCII 打印字符:数字32-126分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
转义字符
作用:用于表示一些不能显示出来的ASCII字符,也就是用于表示一些特殊的字符,就不用记这些特殊字符的ASCII码了,直接用转义字符表示这种特殊字符
常用的转义字符:\n \\ \t
所有的转义字符都是由两个字符拼接成一个字符的,且第一个字符都是\
\n
换行(LF),将当前位置移到下一行开头
\r
回车(CR),将当前位置移到本行开头
\t
水平制表(HT),跳到下一个TAB位置
\\
代表一个反斜线字符 “\”
int main() {
// 转义字符
// 换行符 \n
cout << "hello world\n";
// 反斜杠 \\
// cout << "\" << endl; // 报错:缺少右引号
cout << "\\" << endl;
// 水平制表符 \t
cout << "aaa\thelloworld" << endl;
// \t有多长,取决于前面的字符有多长,加上前面的字符,一共8个字符
// 前面的aaa有3个字符,则\t输出空格是5个,共8个
cout << "aaaa\thelloworld" << endl;
// 前面的aaaa有4个字符,则\t输出空格是4个,共8个
// 水平制表符用于输出的时候有对齐的效果,默认算上前面的字符,共占8个字符
cout << "aaaa\thelloworld" << endl;
cout << "aa\thelloworld" << endl;
cout << "aaaa\thelloworld" << endl;
// 由输出结果可以看出来,helloworld都是整齐输出的
system("pause");
return 0;
}
水平制表符会根据前面的字符个数来判断输出多少个空格,默认共占8个位置
若前面的字符已经有8个了,则在这些字符后面重新找几个字符结合空格去占8个位置
字符串
作用:用于表示一串字符
两种风格
-
C风格字符串:
char 变量名[] = "字符串值";
一些字符组合到一块,就成了字符串,示例:
int main() { char str[] = "hello world"; cout << str << endl; system("pause"); return 0; }
注意:C风格的字符串要用 双引号 括起来
-
C++风格字符串:
string 变量名 = "字符串值";
int main() { // C++风格字符串 // 使用前需要包含一个头文件 #include <string> string str2 = "hello world"; cout << str2 << endl; system("pause"); return 0; }
string类型使用前需要包含头文件
#include <string>
布尔类型 bool
作用:布尔数据类型代表 真 或 假 的值
bool类型只有两个值:
- true 真 (本质是1)
- false 假 (本质是0)
bool类型占1个字节大小
int main() {
bool flag = true;
cout << flag << endl; // 1
flag = false;
cout << flag << endl; // 2
cout << "size of bool = " << sizeof(bool) << endl; // 1
system("pause");
return 0;
}
数据的输入
作用:用于从键盘获取数据
关键字:cin
语法:cin >> 变量
示例:
int main() {
// 整型输入
int a = 0;
cout << "请输入整型变量" << endl;
cin >> a;
cout << a << endl;
// 浮点型输入
double d = 0;
cout << "请输入浮点型变量" << endl;
cin >> d;
cout << d << endl;
// 字符型输入
char ch = 0;
cout << "请输入字符型变量" << endl;
cin >> ch;
cout << ch << endl;
// 字符串型输入
string str;
cout << "请输入字符串型变量" << endl;
cin >> str;
cout << str << endl;
// 布尔类型输入
bool flag = true;
cout << "请输入布尔型变量" << endl;
cin >> flag;
cout << flag << endl;
system("pause");
return 0;
}
注释快捷键:先按Ctrl
+ K
然后按Ctrl
+ C
,或者按住Ctrl
后依次按 K
和 C
解注释快捷键:先按Ctrl
+ K
然后按Ctrl
+ U
,或者按住Ctrl
后依次按 K
和 U