| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 652 人关注过本帖
标题:一个简单的问题 高手帮帮忙
只看楼主 加入收藏
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:9 
一个简单的问题 高手帮帮忙
输入
main()
{
long y;
y=200*200;
printf("%ld",y);
}
为什么输出的不是40000啊,而是-25536,对于更大的数值计算,该用哪个类型的命令啊 ,谢谢
搜索更多相关主题的帖子: long 
2010-08-17 10:19
苗伊
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-08-17 10:23
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
呵呵,还是不对啊,是不是系统默认200是int型,所以计算结果也自动转换到int型了啊?

粗心是大敌
2010-08-17 10:33
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
弄明白了,不知对不对,对于较大的计算,比如y=x*x,x和y都应设为long型,假如x值较小而设为int型,输出的y会默认为int型。

粗心是大敌
2010-08-17 10:40
钟名声
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2010-8-12
收藏
得分:5 
因为c语言默认为有符型,输出数的范围是-32767到32768,你只要改成printf("%u",y);就可以了。
2010-08-17 10:48
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
谢谢  基础没好好看  

粗心是大敌
2010-08-17 11:06
maqingqin
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2010-2-1
收藏
得分:0 
就左不就右,就长不就短。你们没听过么。
2010-08-17 11:09
liyinc
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2010-8-19
收藏
得分:0 
我也同意第3楼的意见...我试了下..改成下面这样结果就对:
main()
{
   long y;
   long i=200;
   y=i*i;
   printf("%ld",y);
}
2010-08-19 17:11
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
改y=200*(long)200;
御坂御坂笑着解释

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-19 17:19
zclaile
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2010-8-20
收藏
得分:0 
认真学习
2010-08-20 12:35
快速回复:一个简单的问题 高手帮帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021014 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved