sizeof错误的认识(sizeof是关键字为什么可以加括号)

本文探讨了sizeof关键字的使用,指出它并非函数且需要括号来明确操作对象。解释了sizeof处理不同类型如int、struct、指针时的区别,并通过示例展示了可能的误解,包括数组、指针与结构体的sizeof计算。文章还提到了不同编译器(如GCC和VC)在某些情况下的差异,并讨论了涉及的汇编知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面仅为个人理解,编译器中验证外,没有任何理论依靠,若有错误请指出。
 
 
       首先,sizeof是一个关键字并不是一个函数。或许你有疑问,既然是一个关键字,为什么出现sizeof的时候后面操作对象都加上括号哪?原因如下。
1. sizeof int ,结果为4,说明 sizeof说明他不是一个函数。
2.siezof(int )是关键字,为什么分开标记,比方 int i;int i,j;使用空格、逗号区分关键字和操作对象, 请测试 int(i),你很惊
  奇的发现这句话竟然可以编译通过没有报错,这句话的作用是相当于 int i,原因如下,int i,我们从原理上分析这句话,空格起
  的是一个分割的作用,有用区分变量和变量类型。 int(i)同样也起到了区分变量和变量类型的,由于()的优先级别高,所以括号里
  边、外边成为两部分,这样与 int i;的功能相同
3.sizeof后面为什么一直有括号
    sizeof struct  student;这一句话将会,编译失败,因为 sizeof 将 struct作为操作数,而并非将整个 struct  student 作为操作数,
 这是因为优先级别的问题,
   int a;sizeof a+1;结果值为5; 原因如下 sizeof(a)+1;
    在sizeof后面加上括号,很容易区分操作对象,不容易出现歧义,去除优先级别错误
 
 
下面举例说明 sizeof 容易出差的地方。 </
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值