标题:简单的程序问题
只看楼主
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
结帖率:100%
 问题点数:0 回复次数:4 
简单的程序问题
#include <stdio.h>
void main()
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
}


这个程序是潭浩强的C语言书上例子,书上的输出结果是32767,-32768


而我用visual studio c++ 6.0 编译的结果是32767,32768


两个相差一个负号,请问大虾熟对熟错?????
搜索更多相关主题的帖子: include visual C语言 
2008-08-14 22:41
csynyk
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2008-8-9
得分:0 
潭浩强的C语言书上例子是以16位系统来举列的!现在的机器都是32位的!

http://blog./csynyk
2008-08-14 22:53
foxpeter
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-7-11
得分:0 
你用TC就能输出书里的结果了
2008-08-14 23:01
ronaldfree
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-8-2
得分:0 
2楼正解。16位机上,int型数据的范围为-32768~32767,32767+1溢出了,就从最大的正数变成了最小的负数。内存中的用16进制数表示为0xffff,在16位系统里解释成-1,在32位系统里为解释为32768(因为没有溢出)
2008-08-14 23:13
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
得分:0 
谢谢大家的帮助,明白了,
2008-08-14 23:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-228340-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046972 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved