• 浅析C语言中的整形类型


    在C语言中,可以把 字符型、短整形、整形、长整形都看作是整形,同属于整形家族这个大类型。
    这些类型的大小,默认是否有符号等一些知识点较零散,较容易混淆,所以特地整理如下。
     
    一 类型存储字节长度说明
      字符型(char): C语言规定长度是8位,占一个字节。
      短整、整形、长整型之间的关系则是:
       长整形至少和整形一样长,整形至少和短整形一样长。
      sizeof(long int) >= sizeof(int) >=sizeof(short int)
      短整形、整形、长整形的长度(占几个字节)C语言标准是未明确规定的,
    由编译器实现决定。
     
    二 是否有符号说明
    字符型(char),C语言标准未规定默认是signed还是unsigned signed,由编译器实现决定。
    短整形、整形、长整形则C语言标准明确规定默认是signed的。C语言标准中明确规定除了char类型外,
    如果不明确写明signed或unsigned 关键字都表示是signed。
    例如  int n1; //n1肯定是有符号类型的整数。 肯定是 signed int n1。
             char ch1; //根据编译器的实现而定,ch1有可能是signed char, 也有可能是unsigne char 。
    综上所述,signed 一般用在char类型声明上,其他类型默认都是signed类型的。
     
    三 整形声明的省略写法
    short  long  signed  unsigned 这些是用于修改变量长度和符号的关键字。
    在声明整形变量时,如果声明中已经有有了以上4个关键字声明符,关键字int可以省略。
    例如 unsigned short int   a; 等同于  unsigned short a ;
    short == signed short ==short int == signed short int 。
    int == signed int == signed  
    long == long int == signed long == signed long int
     
    unsigned short == unsigned short int
    unsigned int  == unsigned
    unsigned long == unsigned long int
     
    四 实际常用编译器实现规范
    虽然各编译器对于整形的具体实现不相同,但通常实现都遵从ILP32或LP64规范。
    ILP32的含义是 I(Integer),L(Long), P(Pointer)是32位,意思是整形、长整形、指针都是4字节、32位。32位计算机采用该规范。
    LP64 的含义是 L(Long), P(Pointer)是64位,8字节。通常64位计算机采用该规范。
    编译器规范具体实现如下:
     
     
     
       类型
    ILP32
    LP32
    char 
    8位
    8位
    short
    16位
    16位
    int 
    32位
    32位
    long 
    32位
    64位
    long long
    64位
    64位
    指针
    32位
    64位
    double
    64位
    64位
     
     
     
     
     
     
      
     
        
  • 相关阅读:
    利用UltraScale和UltraScale+FPGA和MPSOC加速DSP设计生产力
    ARM系列处理器和架构
    Thumb扩展
    使用Redis分布式锁处理并发,解决超卖问题
    idea指定启动参数、环境变量
    Json返回结果为null属性不显示解决
    Spring Cloud Zuul 网关服务的fallback
    记录一次URL中有特殊字符怎么处理?
    logback的使用和logback.xml详解
    通过gitlab的webhook触发Jenkins自动构建设置
  • 原文地址:https://www.cnblogs.com/jameszeng/p/10724841.html
Copyright © 2020-2023  润新知