设为首页收藏本站

八达网

 找回密码
 注册
查看: 674|回复: 20
打印 上一主题 下一主题

问个很简单很白痴的问题,关于short int,请诸位老湿不吝赐教

[复制链接]

4332

主题

5

好友

5万

积分

光明执政官

战队
[S.lian]
种族
Zerg

2012年度八达十大水友 2011年度八达十大水友 2011中国少年先锋队八达支队副总队

跳转到指定楼层
1
发表于 2012-6-23 20:19 |只看该作者 |倒序浏览
例1.4 求50的三次方
int main()
{  short x;;
    x=50*50*50;
    printf(”%d\n“,x);
   return 0;
  }

计算结果是-6072         

50的3次方本来应该是12500的,那么现在这个结果,
是因为溢出了吗?

我看了下对照
短整型         short [int]        2        -32768~32767

12500 没有超出这个取值范围啊。怎么会溢出呢   
1

查看全部评分

   

4332

主题

5

好友

5万

积分

光明执政官

战队
[S.lian]
种族
Zerg

2012年度八达十大水友 2011年度八达十大水友 2011中国少年先锋队八达支队副总队

2
发表于 2012-6-23 20:25 |只看该作者
短整型占2个字节 长整型占4个字节
字节的差异怎么影响运算的结果的呢
   
回复

使用道具 举报

253

主题

12

好友

11万

积分

黑暗执政官

图样图森破

战队
SCI
种族
Terran
3
发表于 2012-6-23 20:26 |只看该作者
体育老师死得早
回复

使用道具 举报

3

主题

0

好友

2765

积分

坦克

4
发表于 2012-6-23 20:27 |只看该作者
高深.几乎完全一点都不明白
回复

使用道具 举报

738

主题

0

好友

2万

积分

大和

8da熊蜜工作领导小组长

5
发表于 2012-6-23 20:28 |只看该作者
体育老师死的早
回复

使用道具 举报

西门本座 该用户已被删除
6
发表于 2012-6-23 20:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

2

主题

0

好友

25

积分

农民

7
发表于 2012-6-23 20:47 |只看该作者
50*50=2500
2500*50=125000
回复

使用道具 举报

2

主题

0

好友

7471

积分

大象

8
发表于 2012-6-23 20:50 |只看该作者
回复

使用道具 举报

38

主题

1

好友

4万

积分

大和

9
发表于 2012-6-23 21:04 |只看该作者
数死早
回复

使用道具 举报

头像被屏蔽

105

主题

0

好友

5816

积分

禁止发言

10
发表于 2012-6-23 21:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

364

主题

0

好友

9014

积分

大象

拱火组组长

11
发表于 2012-6-23 22:20 |只看该作者
你体育老师的数学是生物老师教的吧
回复

使用道具 举报

22

主题

0

好友

6万

积分

仲裁者

12
发表于 2012-6-24 12:43 |只看该作者
体死早
回复

使用道具 举报

198

主题

3

好友

3万

积分

大和

13
发表于 2012-6-24 13:06 |只看该作者
本帖最后由 Pentium9 于 2012-6-24 13:09 编辑
别愁BloodBrood 发表于 2012-6-23 20:25
短整型占2个字节 长整型占4个字节
字节的差异怎么影响运算的结果的呢


是printf  %d的问题

没有单独为short的2个字节设置一个符号,用%d
从printf函数原理来说,函数根据前面的格式字符串来强硬转换后面的参数,比如碰到%d,就表示要将参数强硬转换为int型,如果你传入的参数是short型,short型只要两个字节,那么强硬转换为int(四个字节

原来函数的参数,每一个最少要占一个计算机位长(因为参数要压栈),所以short型参数压栈时已经扩展为四个字节了(32计算机),所以即使用char型当整数输出也是可以的.
回复

使用道具 举报

866

主题

22

好友

10万

积分

黑暗执政官

闻昆吾方始,知秋珉而入林

2007年度八达十大杰出青年 2008年度八达十大水友

14
发表于 2012-6-24 13:13 |只看该作者
数学不好的请不要做码农。。
卿晓寒夜,须知朝阳
胸大了不起么,爽的又不是自己!
回复

使用道具 举报

14

主题

2

好友

1万

积分

航母

15
发表于 2012-6-24 13:26 |只看该作者
50*50*50=125000,楼主你少了个0
回复

使用道具 举报

143

主题

1

好友

2万

积分

大和

16
发表于 2012-6-24 15:01 |只看该作者
码农威武!
回复

使用道具 举报

780

主题

0

好友

13万

积分

主区版主

Rank: 8Rank: 8Rank: 8Rank: 8

17
发表于 2012-6-24 17:21 |只看该作者
原创内容 水晶 +2
回复

使用道具 举报

iamlosingyou 该用户已被删除
18
发表于 2012-6-24 20:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1

主题

0

好友

2万

积分

大和

19
发表于 2012-6-24 20:22 |只看该作者
50*50*50=125000,换成二进制是个17位的数,但是short int只截取16位,并且16位要取反,要有标志位,然后就变成这个负数了
向我祈祷吧! 渺小的众生!
回复

使用道具 举报

4

主题

0

好友

7814

积分

大象

20
发表于 2012-6-24 20:33 |只看该作者
我是来学习50的三次方等于12500的,楼主你太犀利了
回复

使用道具 举报

文若天成偶得之 该用户已被删除
21
发表于 2012-6-24 21:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|八达网    

GMT+8, 2025-11-26 11:01

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部