SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档320

  • 关于

  • 搜索

C语言中sizeof操作符的坑

发表于 2020-01-06 更新于 2021-10-29 分类于 计算机 , 技术 , C/C++ 阅读次数: Valine:
本文字数: 736 阅读时长 ≈ 1 分钟

前言

  今天在图书馆看C语言,被雷司令问了个关于sizeof操作符的问题,没想到就掉坑里去了,特此记录一下,免得以后“再次踏入同一条河流”。 _(:з」∠)_

正文

  先来看一段代码:

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main(){
int i = 1;

printf("%d\n",sizeof(i++));
printf("%d\n",i);

return 0;
}

  请问该段代码的输出是什么?
  首先sizeof是用于求数据类型内存大小的运算符,在VS中int占4字节,所以用sizeof求值以后应该是4,然后执行了i++,这样再输出i的值就应该是2。
  所以我的答案是:

1
2
4
2

  然后…我就错了然后! (ÒωÓױ)
  正确答案应该是:

1
2
4
1

  这是为什么呢?原因如下:

  很多初学者可能都认为sizeof是函数,因为它的使用方法和函数很相似,其实不然,sizeof不是函数,它是一个操作符,如果查任何一本C语言教材中的操作符优先级表的时候我们都可以看到操作符sizeof的优先级是最高的。它的用法很简单,独处结果是操作数的所占内存的大小,操作数可以时int、char之类的数据类型,或者是变量。但关于sizeof的使用要小心,因为它在编译期就完成了计算,在函数运行时期它已经是一个常数值了。

  所以说sizeof(i++)中的i++是不会运算的。╮(╯▽╰)╭

-------- 本文结束 感谢阅读 --------
相关文章
  • OpenCV3使用中遇到的一些问题
  • Qt使用中遇到的一些问题
  • C++编程遇到的问题
  • 基于Qt的工业名牌识别系统遇到的问题
  • VisualStudio一个解决方案中创建多个项目
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: C语言中sizeof操作符的坑
  • 本文作者: SiriYang
  • 创建时间: 2020年01月06日 - 18时01分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20200106183403id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
学习笔记 C/C++ 语法
CCF-CSP:201709-1打酱油
考研复试口语连读(李旭)
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
320 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%