|
![]() | 作者: 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号