sizeof是操作符,是操作符!!!

       在C语言学习中,我们常常会将sizeof当作一个函数。因为通常在使用时,sizeof后面要加括号,然而虽然很难接受但铁打的事实就是它是一个 关 键 字

       简单的做个实验来证明下:

int main()
{
	int a = 0;

	printf("test 1 :%d\n", sizeof(int));
	printf("test 2 :%d\n", sizeof(a));
	printf("test 3 :%d\n",sizeof a);
	
	return 0;
}

       在VS 32位系统下,可以完美地运行,其运行结果:

      而我们也知道,sizeof 的功能就是 计算对象所占内存空间的大小。32位系统下, int 占4字节, a又是整型变量,所以也占4字节。

      可能有人会有疑问" sizeof(int) "可以运行,为什么" sizeof int "又不可以呢?                                                                                                            这里我们要明白,万事都有其存在意义。                                                                                                                                                         像是 unsigned + 类型   // 表示无符号数                                                                                                                                                                      static + 类型        // 表示静态变量                                                                                                                                                                     。。。。而再看 sizeof + 类型 想要表示什么意义呢?想要声明什么样的类型变量? 类型扩展吗? 所以这么思考就明白它是                                       错误的表示。

     所以在计算变量空间大小时可以省略括号,而在计算类型时大小不能省略。不过在一般情况建议写着,防止出错。

     除此之外,使用sizeof还要注意,由于它是在编译时求值,所以sizeof操作符内可以当作常量表达式

     也可以自行验证:

int main()
{
	int a = 0;
	printf("test 1 :%d\n", sizeof(a = 5));
	printf("test 2 :%d\n", a);
	
	return 0;
}

       

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值