| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:有个疑问想请教下!
只看楼主 加入收藏
彬life
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2011-3-9
结帖率:0
收藏
 问题点数:0 回复次数:5 
有个疑问想请教下!
课本上有这样一段关于整型数据溢出的代码
 #include<stdio.h>
 void main()
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d",a,b);
}
运行结果为:32767,-32768


课本说为了防止这种整型数据溢出的情况,要将变量b改为long型,同时将a+1改为a+1L,

为什么把b改为long型后还要改a+1为a+1L,不改的话可以吗
搜索更多相关主题的帖子: include 课本 
2011-07-02 15:43
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
应该会自动提升的,所以不加也行。但是a也要改为long,a如果还是int,那么就必需要加上L.

My life is brilliant
2011-07-02 15:48
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:0 
    二楼正解。一个表达式中低级的数据类型都会先转换为其中最高级的类型后运算,所以1会自动转化为long型的,楼主可以把代码搞出来自己运行下的哦,这样理解的效果更好。
2011-07-02 17:12
hijk_12
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2005-6-25
收藏
得分:0 
自动转换的

2011-07-02 17:52
彬life
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2011-3-9
收藏
得分:0 
main()
{
 long int a,b;
 a=32767;
 b=a+1;
 printf("%d,%d",a,b);
 getch();
}
运行结果:
32767,0

为什么会这样呢?
2011-07-02 21:52
彬life
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2011-3-9
收藏
得分:0 
回复 3楼 loveshuang
main()
{
 long int a,b;
 a=32767;
 b=a+1;
 printf("%d,%d",a,b);
 getch();
}
运行结果:32767,0


请问为什么会这样呢?
2011-07-02 21:54
快速回复:有个疑问想请教下!
数据加载中...
 
   



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

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