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;
    }
    

  • 相关阅读:
    java、javaw和javaws的区别
    Hibernate4教程二:基本配置(2)
    Maven入门指南10:Maven的生命周期和插件
    Java中的断言(assert)
    MySQL的数据类型:文本、数字、日期/时间
    面向对象的三大基本特征和五大基本原则
    高内聚低耦合的介绍
    9.7 模拟赛
    16-17学期计划(每周)
    JZOJ 5281 钦点
  • 原文地址:https://www.cnblogs.com/del/p/1342043.html
Copyright © 2011-2022 走看看