前言
虽说Qt支持C++的数据类型,但是还是用Qt自己又封装的数据类型比较好。你在支持能有我原生的支持?
正文
先看qint系列
- 有qint8,quint8,qint16,quint16,qint32,quint32,qint64,quint64
源码如下

解读
1. typedef signed char qint8;
- 说明: 定义了一个 8 位有符号整数类型
qint8,使用signed char实现。 - 范围: -128 到 127
2. typedef unsigned char quint8;
- 说明: 定义了一个 8 位无符号整数类型
quint8,使用unsigned char实现。 - 范围: 0 到 255
3. typedef short qint16;
- 说明: 定义了一个 16 位有符号整数类型
qint16,使用short实现。 - 范围: -32,768 到 32,767
4. typedef unsigned short quint16;
- 说明: 定义了一个 16 位无符号整数类型
quint16,使用unsigned short实现。 - 范围: 0 到 65,535
5. typedef int qint32;
- 说明: 定义了一个 32 位有符号整数类型
qint32,使用int实现。 - 范围: -2,147,483,648 到 2,147,483,647
6. typedef unsigned int quint32;
- 说明: 定义了一个 32 位无符号整数类型
quint32,使用unsigned int实现。 - 范围: 0 到 4,294,967,295
7. 处理 64 位整数类型
#if defined(Q_OS_WIN) && !defined(Q_CC_GNU)
意思是在 Windows 平台上(Q_OS_WIN 被定义),同时编译器不是 GNU 编译器(Q_CC_GNU 未被定义)。
-
Windows 平台:
- 定义:
Q_INT64_C(c)和Q_UINT64_C(c)用于定义 64 位整数常量。 - 实现: 使用
__int64和unsigned __int64类型。 - 说明:
#define Q_INT64_C(c) c ## i64 /* signed 64 bit constant */ #define Q_UINT64_C(c) c ## ui64 /* unsigned 64 bit constant */ typedef __int64 qint64; /* 64 bit signed */ typedef unsigned __int64 quint64; /* 64 bit unsigned */
- 定义:
-
其他平台:
- 定义:
Q_INT64_C(c)和Q_UINT64_C(c)用于定义 64 位整数常量。 - 实现: 使用
long long和unsigned long long类型。 - 说明:
#ifdef __cplusplus # define Q_INT64_C(c) static_cast<long long>(c ## LL) /* signed 64 bit constant */ # define Q_UINT64_C(c) static_cast<unsigned long long>(c ## ULL) /* unsigned 64 bit constant */ #else # define Q_INT64_C(c) ((long long)(c ## LL)) /* signed 64 bit constant */ # define Q_UINT64_C(c) ((unsigned long long)(c ## ULL)) /* unsigned 64 bit constant */ #endif typedef long long qint64; /* 64 bit signed */ typedef unsigned long long quint64; /* 64 bit unsigned */
- 定义:
qlonglong
由下面源码可以看出

qlonglong等同于qint64,qulonglong等同于quint64。
qreal
由源码可知qreal等于double

