日期: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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论