
| 
 | 
|  | 作者: 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号