C语言数值范围最大的数据类型(即能输出最大值)是啥?还有怎么用printf函数表示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数值范围最大的数据类型(即能输出最大值)是啥?还有怎么用printf函数表示?相关的知识,希望对你有一定的参考价值。

例如,C语言中,现在我知道的数值范围最大的数据类型是double,在1/7E-308~1/7E+308之间,有没有比它更大的数据范围,还有怎么用printf函数表示?例如,double类型是printf(" %lf ",data);我用的软件是Dev,谢谢啊!ps:我是菜鸟来的,最好能详细一点啊。

要表示更高精度的,在C语言里是没有的,double是采用一种IEEE标准来表示浮点数在计算机里的形式的,一般来说是64位,也就是8个字节,正如楼上说的,如果要表示精度更高的浮点数,就是要自行设计算法咯~~~~ 参考技术A double 好像已经是最大的。 更大用高精把,想多大有多大。

Qt6-数值数据类型

本文内容: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();


以上是关于C语言数值范围最大的数据类型(即能输出最大值)是啥?还有怎么用printf函数表示?的主要内容,如果未能解决你的问题,请参考以下文章

1、啥是数值的范围?列出的数据类型各自的范围是多少?C语言

c语言 %d %f %lf %d可表示的最大和最小范围是多少?超过了范围 计算机怎么显示

C语言中INF和NAN是啥意思

java的double的大数值时 怎么才能不显示成

在C语言中,int类型存储的最大的数是2^32,为啥?为啥不是2^31

C语言 整型是啥?就是整数吗?