Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18009
  • 博文数量: 7
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-21 09:47
文章分类

全部博文(7)

文章存档

2010年(7)

我的朋友
最近访客

分类: C/C++

2010-01-21 10:03:36

[From snowyd.blog.sohu.com]
默念这个程序,假定int型数据占用4个字节,想象一下它的结果,

int main()
{
    printf("%d\n", (-sizeof(int))/4);
}

不要惊讶,它的结果是:1073741823,这个数据是这么算出来的:
1. sizeof(int)的结果是4,根据已知条件;
2. -sizeof(int)的结果是4294967292,因为sizeof运算符的结果是unsigned int,-运算结果得到结果的内存表示确实和-4的内存表示一样,但这个结果是unsigned int的,signed int的-4和unsigned int的哪个数字内存表示一样呢?4294967292!
3. 4294967292/4-->1073741823

4. 想要得到-1

int main()
{
    printf("%d\n", (-(long)sizeof(int))/4);
}


阅读(1399) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:导出DBF文件到Excel的Python小程序

给主人留下些什么吧!~~