| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1347 人关注过本帖
标题:请教一个关于强制转换的问题
只看楼主 加入收藏
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
因为a,b都是int型的,它们乘积也是int型的,这样就会产生数据溢出,再把它赋给一个long型的变量也会得不到你想要的答案的。 如果说你先把a强制转换成long型的(a还是int型,(long)a是long型),在计算其与b的乘积时,系统会自动把b转换成long型,再计算,所以就不会数据溢出了。

int在不同编译环境下所占字节数是不同的,如TC中2字节,VC6中就是4个字节。

2007-08-17 23:09
xiaosan669
Rank: 1
来 自:西北工业大学
等 级:新手上路
帖 子:78
专家分:0
注 册:2007-3-9
收藏
得分:0 

楼上兄弟西工大哪个学院的? 呵呵 ....


========== 我的世界,我说了算! ==========
2007-08-18 09:37
xiaosan669
Rank: 1
来 自:西北工业大学
等 级:新手上路
帖 子:78
专家分:0
注 册:2007-3-9
收藏
得分:0 
以下是引用维c在2007-8-17 18:41:56的发言:
#include<stdio.h>
main()
{
int a=200,b=3000;
long c;
c=(long)a*b;
printf("%ld",c);
getch();
}



#include<stdio.h>
main()
{
int a=200,b=3000;
long c;
c=a*b;
printf("%ld",c);
getch();
}

请问为什么后者会数据益出?
偶是出学者

好象在VC++6.0里运行时只有警告 没有缢出呀


========== 我的世界,我说了算! ==========
2007-08-18 10:02
lijy520
Rank: 2
等 级:论坛游民
帖 子:119
专家分:42
注 册:2007-8-8
收藏
得分:0 
Visual C++ 6.0 没有问题
俩个都一样

2007-08-18 10:08
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
回复:(xiaosan669)以下是引用维c在2007-8-17 18:41...
在VC6中找不到getch();是因为你没有加conio.h这个库。加上它那个warning就消除了。

另外,VC6为int开辟4个字节的内存空间,所以它是不会溢出的。

2007-08-18 12:42
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
两个程序在VC下就错了啊===》error C2065: 'getch' : undeclared identifier
我把getch();去了就对了
对了,为什么经常看到大家的程序里面有getch();呢 去掉不行吗??

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-18 13:17
eternitelove
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-8-22
收藏
得分:0 
终于找到了,我昨天也遇到这个问题:溢出!百思不得其解啊!很简单long a=366*90;printf("%ld",a);溢出了!想了很多办法,最后猜测是编译器的问题,今天就狂下编译器,看来看去,凡tc版的包括tc4win都存在这个问题,c-free不会,至于今天看到的d什么的没用过不知道。
不过看来楼主还是有解决办法啊!
可是下午又遇到问题了,你说tc对long处理不好吧,它对这段程序又不会溢出:
int i;long sum=1;for(i=1;i<=10;i++)sum*=i;
我又怀疑上午作出的tc有问题的结论了!
好像和3楼说的有关!

[此贴子已经被作者于2007-8-22 16:30:14编辑过]

2007-08-22 16:24
快速回复:请教一个关于强制转换的问题
数据加载中...
 
   



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

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