| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2277 人关注过本帖
标题:C程序关于整型数据溢出的几种情况求解
取消只看楼主 加入收藏
zyzwlh
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-5-17
收藏
 问题点数:0 回复次数:1 
C程序关于整型数据溢出的几种情况求解
在谭的书上有讲
#include <stdio.h>
void main()
{
   int a,b;
   a=32767;
   b=a+1;
   printf(“%d,%d”,a,b);

这个将b改为long就可得到希望的结果   
但我采用
#include <stdio.h>
void main()
{
   int a;
   long b;
   a=32767;
   b=a+1;
printf(“%d,%ld”,a,b);

所得到的仍然是32767,-32768

如果采用
#include <stdio.h>
void main()
{
   int a;
   long b;
   a=32767;
   b=a+1;
printf(“%d,%d”,a,b);

结果和上面的一样

采用
#include <stdio.h>
void main()
{
   int a,b;
   a=32767;
   b=a+1;
printf(“%d,%ld”,a,b);

结果是a为32767,b的值却是一个很大很奇怪的数

采用
#include <stdio.h>
void main()
{
   long int a,b;
   a=32767;
   b=a+1;
printf(“%d,%d”,a,b);

结果也很奇怪  a为32767,b却变成了0

困惑了半天也没想通   所以发到帖吧来寻求明白的人给我点提示  感激不尽!
PS:
我的环境是TC2.0
我用
#include <stdio.h>
void main()
{
   int a,b;
   a=32767;
   b=a+1;
   printf("%d,%d\n",a,b);
}   已经得得正确结果   我主要是想了解出现前面几种情况的原因
先在这里谢谢了!
搜索更多相关主题的帖子: 整型 数据 求解 
2008-05-10 20:13
zyzwlh
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-5-17
收藏
得分:0 
  基本看懂了  
   我之前也用了gcc   当时就发现没有溢出    感觉gcc和TC至少默认的int所占用的存储空间不同  gcc要大些
     真的很感谢你
2008-05-10 23:33
快速回复:C程序关于整型数据溢出的几种情况求解
数据加载中...
 
   



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

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