八达网
标题:
问个很简单很白痴的问题,关于short int,请诸位老湿不吝赐教
[打印本页]
作者:
别愁BloodBrood
时间:
2012-6-23 20:19
标题:
问个很简单很白痴的问题,关于short int,请诸位老湿不吝赐教
例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 没有超出这个取值范围啊。怎么会溢出呢
作者:
别愁BloodBrood
时间:
2012-6-23 20:25
短整型占2个字节 长整型占4个字节
字节的差异怎么影响运算的结果的呢
作者:
Springsun
时间:
2012-6-23 20:26
体育老师死得早
作者:
baijinjin
时间:
2012-6-23 20:27
高深.几乎完全一点都不明白
作者:
用户名掉包了
时间:
2012-6-23 20:28
体育老师死的早
作者:
西门本座
时间:
2012-6-23 20:36
提示:
作者被禁止或删除 内容自动屏蔽
作者:
thegod4204
时间:
2012-6-23 20:47
50*50=2500
2500*50=125000
作者:
zerg王
时间:
2012-6-23 20:50
作者:
doors
时间:
2012-6-23 21:04
数死早
作者:
hengjihengji
时间:
2012-6-23 21:16
提示:
作者被禁止或删除 内容自动屏蔽
作者:
今心
时间:
2012-6-23 22:20
你体育老师的数学是生物老师教的吧
作者:
zq11211277
时间:
2012-6-24 12:43
体死早
作者:
Pentium9
时间:
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型当整数输出也是可以的.
作者:
hysteria
时间:
2012-6-24 13:13
数学不好的请不要做码农。。
作者:
abu1985
时间:
2012-6-24 13:26
50*50*50=125000,楼主你少了个0
作者:
说谎の天使
时间:
2012-6-24 15:01
码农威武!
作者:
潜规则
时间:
2012-6-24 17:21
原创内容 水晶 +2
作者:
iamlosingyou
时间:
2012-6-24 20:14
提示:
作者被禁止或删除 内容自动屏蔽
作者:
观阴大湿
时间:
2012-6-24 20:22
50*50*50=125000,换成二进制是个17位的数,但是short int只截取16位,并且16位要取反,要有标志位,然后就变成这个负数了
作者:
eternalrage
时间:
2012-6-24 20:33
我是来学习50的三次方等于12500的,楼主你太犀利了
作者:
文若天成偶得之
时间:
2012-6-24 21:54
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 八达网 (https://www.8-da.com/)
Powered by Discuz! X2.5