CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

C语言初学的问题!求救

楼主Shadow_boy(没事找事中)2006-03-19 19:52:45 在 C/C++ / 新手乐园 提问

刚开始学谭浩强的C程序设计,书上用了一个小程序来演示整型数据的溢出,代码如下:  
  #include   "stdio.h"  
  void   main()  
  {  
          int   a,b;  
          a   =   32767;  
          b=   a   +   1;  
          printf("%d,%d",a,b);  
          getch();  
  }  
  结果是32767,-32768,说这是因为整型数据溢出而导致的,因为int型数据只有16位,只能表示到32767,再加一就溢出了,说是把b改成long可以解决这个问题,我上机试了一下,a,b全为int是结果确实是32767,-32768,但我把b改成long后仍然是这个结果,这是为什么呢?另外如果a,b全为long,则结果是32767,0,请高手指教!! 问题点数:20、回复次数:7Top

1 楼feny911(春韭秋菘)回复于 2006-03-19 20:10:50 得分 5

想不通是什么回事  
  请楼主说明一下你的编译环境,包括编译器、操作系统和CPU  
  Top

2 楼Shadow_boy(没事找事中)回复于 2006-03-19 20:28:15 得分 0

哦,我用的是TC3.0,不过TC2.0也不行,操作系统当然是windowsTop

3 楼ma100()回复于 2006-03-19 20:36:33 得分 15

%ld`Top

4 楼Shadow_boy(没事找事中)回复于 2006-03-19 20:41:49 得分 0

谢谢楼上的,我改了,但结果还是一样  
  void   main()  
  {  
          int   a;  
          long   b;  
          a   =   32767;  
          b=   a   +   1;  
          printf("%d,%ld",a,b);  
          getch();  
  }Top

5 楼Shadow_boy(没事找事中)回复于 2006-03-19 20:46:52 得分 0

我测试了一下,必须把a,b全部改成long型,然后用%ld的格式输出结果才不会错,这是什么原因呢?请指教Top

6 楼Shadow_boy(没事找事中)回复于 2006-03-19 20:56:31 得分 0

谢谢ma100()   的提醒,我总算明白了,由于a是int型的a+1仍然是int型,即-32768,然后赋给b,b为long,作符号扩展后仍然为-32768,谢谢各位的指教!!Top

7 楼feny911(春韭秋菘)回复于 2006-03-20 00:40:27 得分 0

但是再怎么样,b   也不可能输出   0   啊。  
  楼主是不是写错了?  
  Top

相关问题

  • 菜鸟,初学C++语言
  • 初学C语言用什么书好?
  • C语言初学者郁闷。。。
  • 我是C语言的初学者
  • 一个很简单的C语言问题——————————————一个初学C语言者!
  • 一道简单的C语言题~~~~——————一个C语言初学者!
  • 关于c++语言的简单问题--初学
  • 我是C语言初学者,请帮忙!!!
  • 初学C++语言,看哪本书比较好?
  • 我是C语言初学者,问个问题,给分呀

关键词

  • 数据
  • 指教
  • 溢出
  • 改成
  • 谢谢
  • 结果
  • ld
  • long

得分解答快速导航

  • 帖主:Shadow_boy
  • feny911
  • ma100

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo