作者ck940560 (小弼)
看板NTUBIME101HW
标题Re: [C++] 变数型态简述
时间Sun Oct 26 22:17:07 2008
附上测试过後的各种变数值域(仅整数),
short -32768~32767 共2^16个数(2Byte)
int -2147483647~2147483647 共2^32个数(4Byte)
long int -2147483647~2147483647 同上
long long int -9223372036854775808~9223372036854775807 共2^64个数(8Byte)
float -16777216~16777216 不含小数共2^26个数(4Byte)
double -9007199254740992~9007199254740992 不含小数共2^54个数(8Byte)
long double -9007199254740992~9007199254740992 同上
unsigned short 0~65535 共2^16个数(2Byte)
unsigned int 0~4294967295 共2^32个数(4Byte)
unsigned long int 0~4294967295 同上
unsigned long long int 0~18446744073709551615 共2^64个数(8Byte)
unsigned float 0~4294967295
unsigned double 0~4294967295
unsigned long double 0~9007199254740992
long int 基本上就是int、long double 也跟 double一样。
两个long才会真的扩充,但是double不像int可以加两个long。
C++里面unsigned不能搭配float 和 double,
用了的话会出现警告,不过还是可以用。
以上是整数的测试结果,小数的话比较难测试出范围,
所以....将就用吧!
需要长一点的显示范围还是得用矩阵来表示,
这个以後应该会学到。
题外话,刚刚发现按shift+Backspace可以只删一个中文字,
分享一下,不然一次退两格真的很.....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.166.245.218
1F:推 sb0917:我想应该是学不到用阵列表示...大数练习蛮重要的 10/26 22:21
2F:→ ck940560:对了,你知道为什麽short显示32768会变-32768吗? 10/26 22:24
3F:→ ck940560:32769会变-32767 32770变-32766 65536变0 10/26 22:24
4F:→ ck940560:int 也会有这种情况 10/26 22:25
5F:→ sb0917:因为负数是-1~-32768 正数是0~32767 0当正数 10/26 22:28
6F:→ sb0917:至於32769是因为换成二进位会变成32767的补数~ 10/26 22:29
7F:→ sb0917:第一格是正负号~所以後面补数是多少就会变负多少 10/26 22:29
8F:→ sb0917:你可以用二进位基数印出来就知道了 10/26 22:31
9F:→ sb0917:其实这只是overflow的异常结果,只是刚好凑成对而已~ 10/26 22:35
10F:→ ck940560:32769是1000000000000001' 10/26 22:39
11F:→ ck940560:32767是111111111111111 10/26 22:39
12F:→ sb0917:000000000000001和111111111111111有关系吧~看的出来的 10/26 22:47
13F:→ sb0917:可以去看二的补数加一~这是目前负数表示的方法 10/26 22:48
14F:→ ck940560:1跟0互换 但是为什麽第一个没有? 10/26 22:55
15F:→ sb0917:第一格是拿来表示正负号的... 10/26 22:56
16F:→ ck940560:不是左边第一个吗? 10/26 23:00
17F:→ sb0917:补数加一~ 10/26 23:02
18F:→ ck940560:嗯....难怪电脑会搞错 两个数有一样的显示方法 10/26 23:09
19F:推 xx7983:囧!!!!!!!!!!你们是在讲什麽语言!!!!!!!!!!!!!!! 10/27 06:55
20F:→ ck940560:C语言-.- 10/27 13:07