c语言sizeof计算int字节数,c语言sizeof获取数据类型长度

先看代码在看说明和和结果会让人更多的更加纯粹的思考,同时减少多余词汇造成的负担,这里只通过int类型为例试验,其他类型雷同

注意在使用sizeof时与你系统是32位或者64位有关系,同时和你环境中编译器有关

一、代码#include

int main(void){

int a = 1;

int b = 10223372036854775807;

printf("%d\n",sizeof(int));

printf("%d\n",sizeof(a));

printf("%d\n",sizeof(b));

return 0;

}

1. 2个整型变量a和b值的长度相差很大,可是通过sizeof打印的结果是相同的,那换成其他类型的变量(char等)是否也是这个现象?大家可以自己测试

2. 通过sizeof处理数据类型和此类型的变量,然后打印所得结果也是相同的,这个又是为什么?问题肯定出在sizeof的语句结构上,大家快暂停去查查sizeof在c语言中的语法

二、代码执行结果

f634879b960c836ee09790f0146aa3d4.png

对编译执行结果和结合上述抛出的2个问题思考思考.....

三、问题解释

int i;

sizeof有三种语句形式

1. sizeof(object);   //sizeof(对象); 这里的对象可以是变量也可以是表达式 sizeof(i);

2. sizeof(type_name);   //sizeof(类型); sizeof(int);

3. sizeof object;  //sizeof 对象 ; sizeof i;

说明:实际上sizeof计算一个对象(变量或者表达式结果)的大小也是转换成对应类型的计算。所以统一类型不通变量其sizeof值都是一致的,和变量赋的值大小没关系。

四、延伸

1. 指针#include

int main(void){

int a = 1;

int * p = &a;

printf("%d\n",sizeof(int));

printf("%d\n",sizeof(a));

printf("%d\n",sizeof(p));

char * pc="abc";

printf("%d\n",sizeof(pc));

int * pi;

printf("%d\n",sizeof(pi));

char **ppc=&pc;

printf("%d\n",sizeof(ppc));

void (*pf)();    //指针函数

printf("%d\n",sizeof(pf));

return 0;

}

结果:

d765a19f87715eeb116b4c99b2e14e9d.png

2.数组

通过sizeof有助于我们更好的深入了解数组#include

int main(void){

char a1[]={"qwqwqw"};

int a2[3];

printf("%d\n",sizeof(a1)); //结果7

printf("%d\n",sizeof(a2)); //结果12

return 0;

}

f2a910b1dcd0a03b19a65a5e2e80ac5c.png

.....

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值