Qt6数据类型-qint8、quint8、qint16、quint16、qint32、quint32、qint64、quint64、uint、qlonglong、uchar、double

本文详细介绍了C++的七种基本数据类型及其存储范围,包括bool、char、int、float、double等,并给出了不同类型的字节数、最大值和最小值。同时,讨论了Qt框架中使用的特定数据类型,如qint8、quint32等,以及如何利用sizeof和std::numeric_limits来获取类型信息。文章通过示例展示了如何打印变量的类型、字节数、最大值和最小值,提供了模板函数和类实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文内容:Qt6数值类型取值范围的例子、Qt6使用的基本数据类型、C++基本数据类型、还有一个比较好的例子(重点重点重点)

1.七种基本的 C++ 数据类型

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型wchar_t
其实 wchar_t 是这样来的:

typedef short int wchar_t;

2.类型的变量所能存储的最大值和最小值

类型范围
char1 个字节-128 到 127 或者 0 到 255
unsigned char1 个字节0 到 255
signed char1 个字节-128 到 127
int4 个字节-2147483648 到 2147483647
unsigned int4 个字节0 到 4294967295
signed int4 个字节-2147483648 到 2147483647
short int2 个字节-32768 到 32767
unsigned short int2 个字节0 到 65,535
signed short int2 个字节-32768 到 32767
long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int8 个字节0 到 18,446,744,073,709,551,615
float4 个字节精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double8 个字节双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long double16 个字节长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t2 或 4 个字节1 个宽字符
  • 不同平台所占字节数
    在这里插入图片描述

3.Qt中使用的数据类型

类型描述
qint8char
qint16short int
qint32int
qint64long long int
qintptr整数类型,用于表示带符号整数中的指针(用于散列等)。qint32 或 qint64 的类型定义
qlonglonglong long int
qptrdiff用于表示指针差异的整数类型。
qreal除非 Qt 配置了 -qreal float 选项,否则为 double 类型定义。
qsizetype在 Qt 支持的所有平台上,该类型保证与 size_t 的大小相同。
quint8unsigned char
quint16unsigned short
quint32unsigned int
quint64unsigned long long int
quintptr用于在无符号整数中表示指针的整数类型(用于散列等)。quint32 或 quint64 的类型定义
qulonglongunsigned long long int
ucharunsigned char.
uintunsigned int.
ulongunsigned long.
ushortunsigned short.
float单精度
double双精度

4.占用字节数计算API

//获取字节大小
sizeof(T)

#include <limits>

//获取某类型的最大值
std::numeric_limits<T>::max()

//获取某类型的最小值
std::numeric_limits<T>::min()

//打印
#include <QtDebug>
qDebug()<<"size:"<<sizeof(T)<<"max:"<<std::numeric_limits<T>::max()<<"min:"<<std::numeric_limits<T>::min();

//输出数据类型
qDebug()<<typeid(T).name()

//帮助偷懒的gcc输出变量名

#   if defined(__GNUC__)
	char* real_name = abi::__cxa_demangle(typeid(T).name(), nullptr, nullptr, nullptr);
	free(real_name);
#   else
	std::cout << typeid(T).name();
#   endif

5.实现打印变量类型、字节数、最大值、最小值的例子

例子是最好的老师(精心编写,这是重点)

1.打印数据类型最大值和最小值
2.实现一个函数打印最大值最小值
3.实现一个类打印大最值最小值

答案

#include <QCoreApplication>
#include <QtGlobal>
#include <limits>
#include <QtDebug>
#include <cxxabi.h>

template<typename T>
void showRange(T *t)
{
    qDebug()<<typeid(T).name()<<"size:"<<sizeof(T)<<"max:"<<std::numeric_limits<T>::max()<<"min:"<<std::numeric_limits<T>::min();

}

template <class T>
class check
{
public:
    T m_t;
    check()
    {
        //因为gcc打印不出变量的全名称,所以需要添加下面的代码,vc++没有这个问题
    #   if defined(__GNUC__)
        char* real_name = abi::__cxa_demangle(typeid(T).name(), nullptr, nullptr, nullptr);
        qDebug()<<real_name<<"size:"<<sizeof(T)<<"max:"<<std::numeric_limits<T>::max()<<"min:"<<std::numeric_limits<T>::min();
        free(real_name);
    #   else
              qDebug()<<typeid(T).name()<<"size:"<<sizeof(T)<<"max:"<<std::numeric_limits<T>::max()<<"min:"<<std::numeric_limits<T>::min();
    #   endif
    }
};


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

#if 0   //改成1打开
    //最low的方式
    qDebug()<<"quint32 "<<"max:"<<std::numeric_limits<quint32>::max()<<"min:"<<std::numeric_limits<quint32>::min();

    //稍微优雅的方式
    quint32 i;
    showRange(&i);
#endif


    //最牛的方式
    check<quint8> uit1;
    check<quint16> uit2;
    check<quint32> uit3;
    check<quint64> uit4;
    check<qint8> it1;
    check<qint16> it2;
    check<qint32> it3;
    check<qint64> it4;

    return a.exec();
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小鱼酱

用心写好每一篇博客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值