printf sizeof c语言,你可能对 sizeof(i++) 有点误解。。。

本文探讨了C语言中sizeof运算符的一个常见误解,指出sizeof并不是函数而是一个编译期运算符。通过一个实例代码,解释了sizeof(i++)在编译时即确定结果为4(假设32位环境下int为4字节),因此输出的i值并未改变,强调了对sizeof理解的重要性。文章鼓励读者深入掌握sizeof的使用,并在笔试面试中注意相关问题。
摘要由CSDN通过智能技术生成

原标题:你可能对 sizeof(i++) 有点误解。。。

各位,今天还是按照惯例给大家分享一个C语言容易出现的小错误,这也是跟sizeof有关的,问题虽小,却可管中窥豹,话不多说,代码先行:

# include

intmain

{

inti;

i = 8;

printf( "%dn",i);

printf( "%dn", sizeof(i++));

printf( "%dn",i);

return0;

}

问输出的值是什么?如果你上来就说8,4,9 那就错了。当然第一个是8没问题,第二个是4也没问题(32位int类型为4),主要错在了第三个数,其实 本题着重考察的是我们对sizeof的理解。

首先我们要澄清一个误区:sizeof不是函数,不是函数,不是函数!重要的话说三遍,它是一个关键字,更准确地说它是一个单目运算符!其运算符的含义是:求出对象在计算机内存中所占用的字节数。根据C99的规范,sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,所以sizeof(i++)在编译的时候被翻译成sizeof((i++的数据类型)),也就是4(32位int),换言之编译时sizeof(i++)就被4取代了!因此当程序最终执行的时候,sizeof里面不会有任何的i++运算,所以i的值是不变的,这就是本题想考察的点了。

当然,关于sizeof还有其他许多用法和需要注意的地方,比如它的 对象可以是表达式或者数据类型名,当对象是表达式时,括号可省略等等。。。同时sizeof在各种笔试面试中出现的几率非常高,希望大家对它进行熟练掌握,今天这里我们就不展开了,就到这里吧,感谢各位的耐心阅读。

欢迎大家留言区讨论哦!

Wink !

期末考试 来啦!

对于 printf , 你确定你很熟?

关于数组的一个小陷阱!

空指针 到底是什么意思?

12月编程语言排行榜 来了!

为什么用 if(0 == x) 而不是 if(x == 0) ?

12月 集成开发环境(IDE)排行榜来了!

假如计算机是中国人发明的,那代码应该这么写?

C++写的一个好玩的猜数字游戏

sizeof 你真的弄明白了吗? 来看看这个例子

编程能力的4种境界,你到哪一级了?

请大家来给这几行C语言代码找找茬

一个简单但能考察C语言基础的题目,试试?

八大排序算法 ,C语言详细版讲解,硬核推荐! ! !

堆和栈的区别(非常详细,干货收藏! )

C语言中“悬空指针”和“野指针”究竟是什么意思?

这绝对是C语言的一个经典例题了!

这两个C运算符你可能没用过,但却很有用返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值