因为CPU的差异,各系统中的数据类型所占的字节数(bytes)不同,二进制位数(bit)也不同。那么怎样才能知道自己系统的数据类型的字节数,位数呢?

授之以鱼不如授之以渔,大家可以自己从电脑里获取这些信息。

首先我们知道1个字节等于8个位,可以用sizeof()关键字设计以下程序解决:

/*获取当前操作系统的字节数(bytes)和位数(bit)*/
#include<stdio.h>
int main(void)
{
printf("int:bytes %d;bit %d", sizeof(int), sizeof(int) * 8);
return 0;
}

由此可得知楼主系统的整数(int)所占字节数是4,位数为32

而取值范围则可以用极限值符号(极限值符号定义在 limits.h 头文件中,以下会详细介绍)来获得
下面以char类型为例:

/*获取char数据类型的取值范围*/
#include<stdio.h>
#include<limits.h>
int main(void)
{
printf("char:MIN %d;MAX %d", CHAR_MIN, CHAR_MAX);

return 0;
}

有符号整数类型

类型名称 字节数 取值范围
signed char 1 -2^7 ~ 2^7-1
short int 或 short 2 -2^15 ~ 2^15-1
int 4 -2^31 ~ 2^31-1
long int 或 long 4 -2^31 ~ 2^31-1
long long int 或 long long 8 -2^63 ~ 2^63-1
无符号整数类型

类型名称 字节数 取值范围
unsigned char 1 0 ~ 2^8
unsigned short int 或 unsigned short 2 0 ~ 2^16
unsigned int 4 0 ~ 2^32
unsigned long int 或 unsigned long 4 0 ~ 2^32
unsigned long long int 或 unsigned long long 8 0 ~ 2^64
浮点类型

类型名称 字节数 取值范围
float 4 -/+3.4e38(精确到6位小数)
double 8 -/+1.7e308(精确到15位小数)
long double 12 -/+1.19e4932(精确到18位小数)
极限值符号

表示有符号整数类型的极限值符号

类型名称 下限 上限
char CHAR_MIN CHAR_MAX
short SHRT_MIN SHRT_MAX
int INT_MIN INT_MAX
long LONG_MIN LONG_MAX
long long LLONG_MIN LLONG_MAX
表示无符号整数类型的极限值符号

类型名称 下限 上限
unsigned char 0 UCHAR_MAX
unsigned short 0 USHRT_MAX
unsigned int 0 UINT_MAX
unsigned long 0 ULONG_MAX
unsigned long long 0 ULLONG_MAX
表示浮点类型的极限值符号

类型名称 下限 上限
float FLT_MIN FLT_MAX
double DBL_MIN DBL_MAX
long double LDBL_MIN LDBL_MAX

C语言中各个数据类型的取值范围的更多相关文章

  1. mysql中数据类型的取值范围

    mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下: 1.bigint 从 -2^63 (-9223372036854775808) 到 2^ ...

  2. C语言中数据类型的取值范围

    C语言中数据类型的取值范围如下:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 ...

  3. Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

    Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...

  4. hibernate的dao中参数的传递取值

    hibernate的dao中参数的传递取值 private Query setParameter(Query query, Map<String, Object> map) { if (m ...

  5. 关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)

    先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125 ...

  6. 了解Java基本数据类型的取值范围

    拿byte类型做栗子 一个字节是8位二进制数,然后最高位会用来作为符号位.正数计算机是存的原码,负数是存的补码. 也就说byte正数最大是0111 1111,转化为十进制是:127(这就是byte的上 ...

  7. c#利用反射实现对类中的常量进行取值和对应常量的注释

    C#利用反射实现对类中的常量进行取值和对应常量的注释 项目示例:https://gitee.com/dhclly/IceDog.GenerateErrorCode 因为业务需要,项目中有大量的错误码, ...

  8. Java基础:8种基本数据类型,取值范围和储存字节说明。

    Java中,一共有8种基本数据类型: 4种整数型:int,short,long,byte. 2种浮点型:float,double. 1种字符类型:char. 1种表示真值的类型:boolean. [S ...

  9. java数据类型,取值范围,引用类型解析

      与javascript不同,Java是强类型语言,在定义变量前需要声明数据类型.主要分两种数据类型:基本数据类型和引用数据类型. 1.基本数据类型分析: 基本数据类型 数值型 整数型 byte字节 ...

随机推荐

  1. I - 取石子游戏

    有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...

  2. lombok安装方法

    一.介绍 lombok网址:https://projectlombok.org/download.html lombok能够在编译源码的时候自动生成getter和setter方法.即它最终能够达到的效 ...

  3. echarts pie 图表当名称太长时

    当饼图的名称太长时,只显示几个字符,其余的... let use; use.setOption({ tooltip: { trigger: 'item', formatter: "{a} & ...

  4. .NET Core开发日志——Linux版本的SQL Server

    SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程. 最新的SQL ...

  5. vins-mono调试教程

    https://www.cnblogs.com/Jessica-jie/p/6950604.html

  6. python中的风险

    from math import e print(e) e = "中华人民共和国1" print(e) 输出: 2.718281828459045 中华人民共和国1 用from方式 ...

  7. CountDownLatch简单使用

    CountDownLatch介绍 CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计数器,其内部维护着一个count计数,只不过 ...

  8. Exactly-Once 投递语义

    小结: 1.Exactly-Once 是指发送到消息系统的消息只能被消费端处理且仅处理一次,即使生产端重试消息发送导致某消息重复投递,该消息也在消费端也只被消费一次. 消息队列 RocketMQ &g ...

  9. MyEvent.SetEvent; // 同步信号置位

    MyEvent.SetEvent;   //  同步信号置位 TSimpleEvent.Create = TEvent.Create(nil, True, False, nil)           ...

  10. Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比

    Python获取文件名的方法性能对比 前言:平常在python中从文件夹中获取文件名的简单方法   os.system('ll /data/')   但是当文件夹中含有巨量文件时,这种方式完全是行不通 ...