前言
虽说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