zoukankan      html  css  js  c++  java
  • C语言-类型说明符 long,short,unsigned,signed

    类型说明符基本概念

    • C 语言提供了一下四种说明符,四个都属于关键字;

      • short 短型 等价于 short int
      • long 长型 等价于 long int
      • signed 有符号型
      • unsigned 无符号型
    • 这些说明符一般就是用来修饰 int 类型的,所以在使用时可以省略 int

    short和 long

    • short 和 long 可以提供不同长度的整型数,也就是可以概念整型数的取值范围

      • 在 64 位编译器下,int 占用 4 个字节(32bit),取值范围是-2 ** 31~2 ** 31-1
      • short占用 2 个字节(16bit),取值范围是-2 ** 15~2 ** 15-1
      • long 占用 8 个字节(64bit),取值范围是-2 ** 63~2 ** 63-1
    • 总结一下,在 64 位编译器下

      • short 占 2 个字节
      • int 占 4 个字节
      • long 占 8 个字节
      • 因此如果使用的整数不是很大的话可以使用 short 代替 int,这样的话可以节省内存开销
    int main(int argc, const char * argv[]) {
        /*
         short  2 个字节
         int    4 个字节
         long   8 个字节
         long long 8个字节
         */
        
        int num = 123456789999;
        printf("使用int 来输出;%i
    ",num); // -1097261585
        // C语言中不看怎么存,只看怎么取
        long num1 = 123456789999;
        printf("使用int 来输出;%li
    ",num1); // 123456789999  使用%li 或者 %ld 输出
        
        long long num2 = 123456789999;
        printf("使用int 来输出;%li
    ",num2);
        // long long 和 long 的区别
        // 在 64 位的编译器下没有区别,在 32 位的编译器下 long long占 8 个字节,long 占 4个字节
        
        return 0;
    }
    
    • 如果要输出 short int 的话使用%hi 或者%hd 输出

    unsigned 和 signed

    • unsigned 无符号修饰
    • signed 有符号修饰
        /*
         signed
         unsigned
         */
        // 如果给变量前面加上 signed 修饰符的话,代表当前变量的取值范围是正数,负数,零
        // 就代表把二进制的最高位作为符号位,默认是有 signed 的修饰的
        signed int num = 9;
        
        // 如果给变量前面加上了 unsigned 修饰符的话,代表当前变量的取值范围只能是正数和零
        // 如果想打印无符号的变量要使用%u 进行输出
        // 代表不把二进制的最高位w作为符号位,
        unsigned int num1 = -11; // 4294967285,可以正常输出零,正数
        printf("num1 前面加了 unsigned 进行修饰:%u
    ",num1);
        return 0;
    

    不同类型的说明符可以混合使用

    // 混合使用
    // 相同类型不能在一起使用
        long unsigned int num = 111111111111111199;
        printf("混合使用输出:%lu
    ",num);
    
    // 输出 long 使用%l
    // 输出 short 使用%h
    // 输出 long long 使用%ll
    // 输出 signed 默认就是 signed,使用%i
    // 输出 unsigned 使用%u 输出
    
  • 相关阅读:
    elasticsearch 基础
    docker 安装ElasticSearch的中文分词器IK
    Netty的编解码,粘包拆包,心跳检测机制
    Spring IOC 常用的注解
    @JsonView的使用
    lombok的使用以及其中的坑
    Zuul的高级使用
    SpringBoot 整合 ActiveMq
    转:Maven <resource>标签
    码农经常读错的单词
  • 原文地址:https://www.cnblogs.com/shanshan-test/p/12977496.html
Copyright © 2011-2022 走看看