酷!學園

精華區 => 拾人牙慧 => 主題作者是: 劍客 於 2001-11-27 17:41

主題: PERL 的型別錯誤範例
作者: 劍客2001-11-27 17:41
#!/usr/bin/perl
$A=0500;
print "A is ".$A."n";
print "int A is ".int($A)."n";
print "n";

$B='0500';
print "B is ".$B."n";
print "int B is ".int($B)."n";
主題: PERL 的型別錯誤範例
作者: 劍客2001-11-27 17:42
忘記貼執行結果了!

A is 320
int A is 320

B is 0500
int B is 500
主題: PERL 的型別錯誤範例
作者: 梁楓2001-11-28 16:01
唔,小小的疑問

這個範列本身有錯誤的地方嗎? :razz: 看不太出來...

A的指定方式是以數字去做指定,所以系統內部會以他的內容去判斷
全部都是數字(含小數點),那就是數字型態,有一個數字以外(不含小數點)即視為字串

B指定的方式由於是以""做指定,所以其直接以字串做為其資料類型

錯的地方,在那裡丫? f^^
小弟愚昧,沒看出來,可以教一下嗎?
主題: PERL 的型別錯誤範例
作者: 劍客2001-11-28 18:16
其實程式本身沒錯,錯的是我們對結果的預期。在這範例中,如果你光看程式,你認為會印出 500 還是 320?

為什麼我們設給 A 的值是 0500 ,照你所說︰"以數字去做指定,所以系統內部會以他的內容去判斷全部都是數字(含小數點),那就是數字型態",那 A 印出來應該是 500 啊!

但是你看看印出的結果卻變成 320 ,為什麼呢?

留給大家討論一下!
主題: PERL 的型別錯誤範例
作者: 梁楓2001-11-28 20:10
我的看法是這樣的...

A之所以是500,而不是0500
是因為他是直接以數值,而且沒有用""去做框選

而沒有用 "" 框選的

其實重點就是在於 "" 或是''上面
有跟沒有真的是差蠻多的...
主題: PERL 的型別錯誤範例
作者: 劍客2001-11-30 17:46
A 不是 500 啦!你實際跑一遍就知道了!
主題: PERL 的型別錯誤範例
作者: 梁楓2001-11-30 18:38
唔。不好意思....寫太順了,哈
把主題看錯了...晚上就跑一次
主題: PERL 的型別錯誤範例
作者: ...2001-12-02 22:42
0 開頭的是八進位
所以 0500 是 320
^^
主題: PERL 的型別錯誤範例
作者: 劍客2001-12-07 13:05
#!/usr/bin/perl
$B=0x500;
print "B is ".$B."n";
print "int B is ".int($B)."n";
print "n";

$B='0x500';
print "B is ".$B."n";
print "int B is ".int($B)."n";
print "n";

print "---------------------------------------n";
$B="0x500";
print "B is ".$B."n";
print "int B is ".int($B)."n";
print "---------------------------------------n";
$C="a";
print "C is ".$C."n";
print "int C is ".int($C)."n";
print "---------------------------------------n";
主題: PERL 的型別錯誤範例
作者: 劍客2001-12-07 13:08
B is 1280
int B is 1280

B is 0x500
int B is 1

---------------------------------------
B is 0x500
int B is 1
---------------------------------------
C is a
int C is 0
---------------------------------------

第三個 B 如果是字串,為什麼取整數的結果會跟 C 的結果不同?