C++基础——数据类型

1 概述

在创建变量和常量的时候,都需要指定其数据类型,以便为其分配合适的内存空间。

其中宏常量不需要指定类型,是因为宏定义是字符替换。

2 整型

整型表示的是整数,C++中的整型有以下几种:

数据类型 占用空间 取值范围
short(短整型) 2字节 (-2^15 ~ 2^15-1)
int(整型) 4字节 (-2^31 ~ 2^31-1)
long(长整形) Windows为4字节,Linux为4字节(32位),8字节(64位) (-2^31 ~ 2^31-1)
long long(长长整形) 8字节 (-2^63 ~ 2^63-1)

这是在常用的环境中,但是需要知道的是,各个数据类型的长度取决于编译器和操作系统的具体实现。不同的cpu架构和abi版本其实现会有所不同。

3 sizeof关键字

sizeof关键字能够统计不同数据类型所占用的内存大小

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    short a = 10;
    cout << "short类型占用空间为:" << sizeof(a) << endl;
    cout << "int类型占用空间为:" << sizeof(int) << endl;
    cout << "long类型占用空间为:" << sizeof(long) << endl;
    cout << "long类型占用空间为:" << sizeof(long long) << endl;
}

输出

cpp 复制代码
short类型占用空间为:2
int类型占用空间为:4
long类型占用空间为:4
long类型占用空间为:8

windows10,64位主机上输出如上。

4 浮点型

浮点型用于表示带小数的数值。可分为单精度float和双精度double,两者表示的有效数字范围不同。

数据类型 占用空间 有效数字范围
float 4字节 7位有效数字
double 8字节 15~16位有效数字
cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    float f = 3.14159265358;
    double d = 3.14159265358;

    cout << "sizeof(float) = " << sizeof(f) << endl;
    cout << "sizeof(float) = " << sizeof(d) << endl;
    return 0;
}

输出

cpp 复制代码
sizeof(float) = 4
sizeof(float) = 8

5 字符型

字符型用于显示单个字符

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char c = 'a';

    cout << "sizeof(char) = " << sizeof(c) << endl;
    return 0;
}

输出

cpp 复制代码
sizeof(char) = 1

除此之外,还可以将ASCII码表中的数值直接赋值给char类型

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char c = 97;
    cout << c << endl;
    return 0;
}

输出

cpp 复制代码
sizeof(char) = 1
a

6 转义字符

表示一些不能显示的ASCII字符

转义字符 含义 ASCII码值(十进制)
\a 警报 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符"" 092
' 代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
? 代表一个问号 063
\0 数字0 000
\ddd 8进制转义字符,d范围0~7 3位8进制
\xhh 16进制转义字符,h范围09,af,A~F 3位16进制

7 字符串类型

C++中支持两种类型的字符串

一种是沿用C的字符串类型,使用char数组进行保存,两一种是C++风格的字符串,使用string

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char ch1[] = "test1";
    cout << ch1 << endl;
    string ch2 = "test2";
    cout << ch2 << endl;
    return 0;
}

输出

cpp 复制代码
test1
test2

8 布尔类型

表示真或者假

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    bool b1 = true;
    cout << "sizeof(bool) = " << sizeof(b1) << endl;
    bool b2 = 1;
    bool b3 = 0;
    bool b4 = 0.3;
    cout << "b2 = " << b2 << endl;
    cout << "b3 = " << b3 << endl;
    cout << "b4 = " << b4 << endl;
    return 0;
}

输出

cpp 复制代码
sizeof(bool) = 1
b2 = 1
b3 = 0
b4 = 1

bool类型的cout输出为整数,这里会将true输出为1,false输出为0。同样的,数值类型可以转换成bool类型,0转换成false,非0转换成true。

相关推荐
董世昌412 分钟前
js的数据类型有几类?一共有几种?
开发语言·javascript·ecmascript
被星1砸昏头2 分钟前
C++中的状态模式实战
开发语言·c++·算法
Remember_9933 分钟前
【数据结构】深入理解排序算法:从基础原理到高级应用
java·开发语言·数据结构·算法·spring·leetcode·排序算法
wanzhong23334 分钟前
开发日记13-响应式变量
开发语言·前端·javascript·vue
indexsunny4 分钟前
互联网大厂Java求职面试实战:Spring Boot微服务与Kafka消息队列场景解析
java·spring boot·面试·kafka·microservices·interview·distributed systems
qq_12498707534 分钟前
基于Spring Boot的心理咨询预约微信小程序(源码+论文+部署+安装)
java·spring boot·后端·spring·微信小程序·小程序·毕业设计
jiayong235 分钟前
Tomcat Servlet容器与生命周期管理面试题
java·servlet·tomcat
彷徨而立7 分钟前
【C/C++】g++ 和 gcc 生成库的符号可见性
c语言·c++
郝学胜-神的一滴8 分钟前
机器学习数据预处理:深入理解标准化与sklearn的StandardScaler
开发语言·人工智能·python·程序人生·机器学习·sklearn
彭于晏Yan9 分钟前
SpringBoot集成Druid连接多个数据源
java·spring boot·后端