工具:探测数据类型存储空间大小

探测数据类型存储空间大小

作者:jafon.tian

转载请注明出处:https://blog.csdn.net/JT_Notes

在C语言编程得时候,经常需要知道程序编译器对各种数据类型分配的存储空间大小,进而进行精确的内存操作。下面给出一种探测方法,

核心宏定义

#define PRINT_SIZE(type) do{ \
    printf("sizeof(" #type ")=%d\n", sizeof(type)); \
}while(0)

使用示例

// typesize.c
#include <stdio.h>

#define PRINT_SIZE(type) do{ \
    printf("sizeof(" #type ")=%d\n", sizeof(type)); \
}while(0)

int main(int argc, char* argv[])
{
        PRINT_SIZE(char);
        PRINT_SIZE(unsigned char);
        PRINT_SIZE(short);
        PRINT_SIZE(unsigned short);
        PRINT_SIZE(int);
        PRINT_SIZE(unsigned int);
        PRINT_SIZE(long);
        PRINT_SIZE(float);
        PRINT_SIZE(double);
        return 0;
}

编译并测试

$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cat /proc/version 
Linux version 3.10.0-327.22.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Jun 23 17:05:11 UTC 2016

$ gcc typesize.c && ./a.out
sizeof(char)=1
sizeof(unsigned char)=1
sizeof(short)=2
sizeof(unsigned short)=2
sizeof(int)=4
sizeof(unsigned int)=4
sizeof(long)=8
sizeof(float)=4
sizeof(double)=8
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值