帮忙看看,为什么下面这个程序在vc和bc,tc中编译的结果会不一样呢
在vc中编译运行是正确的,但是在bc,tc中就不对了。
#include <stdio.h>
main()
{
unsigned long val,result;
val=result=0;
val=~(1 << 29);
printf("val=0x%lx\n",val);
result=(0xbec00000 & (~(1 << 29)));
printf("result=0x%lx\n",result);
}
问题点数:20、回复次数:4Top
1 楼arfi()回复于 2003-12-03 16:02:03 得分 10
我想是Tc中把数字1作为int型来处理了。
在1前面加上(unsigned long)结果就正确了Top
2 楼arfi()回复于 2003-12-03 16:38:47 得分 5
在数字后面加上l或者L也可。Top
3 楼antijpn(antijpn)回复于 2003-12-03 17:54:35 得分 5
应该是TC的数据长度问题,TC的long好像也只有16bit,所以1<<29这样的操作之后数据已经溢出了
我在BCC5.5 Command Line Complier下面编译的,没有任何问题,VC++7.1也没有任何问题
你试试看把数据长度减小一点Top
4 楼ppgg1979(枝枝)回复于 2003-12-03 18:16:26 得分 0
明白了,多谢二位Top




