int在不同编译环境下所占字节数是不同的,如TC中2字节,VC6中就是4个字节。
----------------解决方案--------------------------------------------------------
楼上兄弟西工大哪个学院的? 呵呵 ....
----------------解决方案--------------------------------------------------------
以下是引用维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();
}
请问为什么后者会数据益出?
偶是出学者
#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里运行时只有警告 没有缢出呀
----------------解决方案--------------------------------------------------------
Visual C++ 6.0 没有问题
俩个都一样
----------------解决方案--------------------------------------------------------
回复:(xiaosan669)以下是引用维c在2007-8-17 18:41...
在VC6中找不到getch();是因为你没有加conio.h这个库。加上它那个warning就消除了。另外,VC6为int开辟4个字节的内存空间,所以它是不会溢出的。
----------------解决方案--------------------------------------------------------
两个程序在VC下就错了啊===》error C2065: 'getch' : undeclared identifier
我把getch();去了就对了
对了,为什么经常看到大家的程序里面有getch();呢 去掉不行吗??
----------------解决方案--------------------------------------------------------
终于找到了,我昨天也遇到这个问题:溢出!百思不得其解啊!很简单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编辑过]
----------------解决方案--------------------------------------------------------