当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>C++ sizeof利用法则及陷阱解析</b>[VC/C++编程]

赞助商链接



  本文“<b>C++ sizeof利用法则及陷阱解析</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1、什么是sizeof

首先看一下sizeof在msdn上的定义:

The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.

看到return这个字眼,是不是想到了函数?错了,sizeof不是一个函数,你见过给一个函数传参数,而不加括号的吗?sizeof可以,所以sizeof不是函数.网上有人说sizeof是一元操作符,但是我并不这么认为,因为sizeof更像一个特别的宏,它是在编译阶段求值的.举个例子:

cout<<sizeof(int)<<endl; // 32位机上int长度为4
cout<<sizeof(1==2)<<endl; // == 操作符返回bool范例,相当于 cout<<sizeof(bool)<<endl;

在编译阶段已经被翻译为:

cout<<4<<endl;
cout<<1<<endl;

这里有个陷阱,看下面的程序:

int a = 0;
cout<<sizeof(a=3)<<endl;
cout<<a<<endl;

输出为什么是4,0而不是盼望中的4,3???就在于sizeof在编译阶段处理的特点.由于sizeof不能被编译成机械码,所以sizeof作用范围内,也就是()里面的内容也不能被编译,而是被替换成范例.=操作符返回左操作数的范例,所以a=3相当于int,而代码也被替换为:

int a = 0;
cout<<4<<endl;
cout<<a<<endl;

所以,sizeof是不大概支持链式表达式的,这也是和一元操作符不一样的地方.

结论:不要把sizeof当作函数,也不要看做一元操作符,把他当作一个特别的编译预处理.


  以上是“<b>C++ sizeof利用法则及陷阱解析</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .