zoukankan      html  css  js  c++  java
  • 学点 C 语言(15): 数据类型 sizeof(检测类型大小)


    获取类型大小的变量最好不是 int 类型, 而是 size_t 类型;

    size_t 在 stdio.h、stddef.h 都有定义.

    1. 获取已知类型的大小:
    #include <stdio.h>
    #include <stddef.h>
    
    int main(void)
    {
        char n = 2;
        size_t size;
    
        size = sizeof(char);
        printf("%*u: char\n", n,size);
    
        size = sizeof(unsigned char);
        printf("%*u: unsigned char\n", n,size);
    
        size = sizeof(short);
        printf("%*u: short\n", n,size);
    
        size = sizeof(unsigned short);
        printf("%*u: unsigned short\n", n,size);
    
        size = sizeof(int);
        printf("%*u: int\n", n,size);
    
        size = sizeof(unsigned);
        printf("%*u: unsigned\n", n,size);
    
        size = sizeof(long);
        printf("%*u: long\n", n,size);
    
        size = sizeof(unsigned long);
        printf("%*u: unsigned long\n", n,size);
    
        size = sizeof(long long);
        printf("%*u: long long\n", n,size);
    
        size = sizeof(unsigned long long);
        printf("%*u: unsigned long long\n", n,size);
    
        size = sizeof(float);
        printf("%*u: float\n", n,size);
    
        size = sizeof(double);
        printf("%*u: double\n", n,size);
    
        size = sizeof(long double);
        printf("%*u: long double\n", n,size);
    
        size = sizeof(wchar_t);
        printf("%*u: wchar_t\n", n,size);
        
        getchar();
        return 0;
    }
    

    2. 获取类型大小可根据类型名, 也可根据变量名:
    #include <stdio.h>
    
    int main(void)
    {
        int i;
        double d;
    
        printf("%u, %u\n", sizeof(i), sizeof(int));
        printf("%u, %u\n", sizeof(d), sizeof(double));
        
        getchar();
        return 0;
    }
    

    3. 对变量名(非类型名), sizeof 也可以不要括号:
    #include <stdio.h>
    
    int main(void)
    {
        int i;
        double d;
    
        printf("%u\n", sizeof i);
        printf("%u\n", sizeof d);
        
        getchar();
        return 0;
    }
    

    4. sizeof(数组变量) 获取的是数组大小(而非维数), 这和 Delphi 很不一样:
    #include <stdio.h>
    
    int main(void)
    {
        int nums[10];
        
        printf("%u\n", sizeof nums);                /* 数组大小 */
        printf("%u\n", sizeof(nums) / sizeof(int)); /* 数组维数 */
            
        getchar();
        return 0;
    }
    

  • 相关阅读:
    【转载】sourcetree 克隆项目显示“这是一个无效的源路径”
    【转载】SQL 查询某个数据是否存在
    【转载】windows 静默安装 winpcap
    Linux expect 远程自动登录机器并执行命令
    CentOS 静态编译缺少库文件 /usr/lib/ld: cannot find lxx
    Java常用工具类(随着工作持续更新)
    一些网址笔记
    1 msql的安装和配置
    postgresql 安装和配置
    有管django使用orm 字段报错问题
  • 原文地址:https://www.cnblogs.com/del/p/1342043.html
Copyright © 2011-2022 走看看