论坛: 编程破解 标题: TC下的一个小错误 复制本贴地址    
作者: lida1818 [lida1818]    论坛用户   登录
下面是我的一个子函数中用到一部分,单列出来
晕,搞了我两天才查出来(编程环境:TC 2。0)
main()
{unsigned long f;
  f=1*2*3*4*5*6*7*8*9*10;
printf("f=%ld",f);
}

看看错在那里?不要用编译器

地主 发表时间: 04-03-10 10:19

回复: yingzike [yingzike]   论坛用户   登录
这一行
f=1*2*3*4*5*6*7*8*9*10;

程式给值时就出界了,是INT型的,改成如下

f = (unsigned long)(1*2*3*4*5*6) * (unsigned long)(7*8*9) * (unsigned long)10;

应当就会OK了,试试

B1层 发表时间: 04-03-10 11:42

回复: afan271314 [afan271314]   论坛用户   登录


B2层 发表时间: 04-03-10 11:47

回复: lida1818 [lida1818]   论坛用户   登录

main()
{unsigned long f;
  f=1L*2*3*4*5*6*7*8*9*10;
printf("f=%ld",f);
}


这样就行了


B3层 发表时间: 04-03-10 12:33

回复: 286 [unique]   版主   登录
TC默认类型是INT,所以按INT处理。
但如果第一个是unsigned long类型,后面的后隐型转换为该类型,所以只要第一个是就行了。
改为:
f=(unsigned long)1*2*3*4*5*6*7*8*9*10;


B4层 发表时间: 04-03-10 17:52

回复: ysfilone [ysfilone]   论坛用户   登录
一个比一个厉害

B5层 发表时间: 04-03-10 19:47

回复: lengxuehnc [lengxuehnc]   论坛用户   登录
我是菜鸟,我感觉没什么问题啊,tc 2.0下能够正常运行啊
main()
{
  unsigned long f=1*2*3*4*5*6*7*8*9*10;
  printf("%ld\n\n",f);
}
运行结果为:
24320

为什么呢?


B6层 发表时间: 04-03-11 23:30

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号