数値型と文字列型の演算

次に、数値型と文字列型が混合した場合を説明します。


この例を見てください。

想像通りの結果でしたか?

『“異なる型が含まれる式”の値の型は、先頭の項の型に合わせられる』ということでした。


先頭が "Lucky" という文字列型なので、最終的に文字列型になるわけです。

ここで、重要なのは、『ある型が異なる型に合わせられるときは、情報を出来る限り維持しようとする』ことです。

実数の場合を見れば明らかですね。



では逆を考えてみます。
整数の場合と実数の場合を、同時に表示してみました。

あれ?
文字列である "Lucky" や "HSP" はどこえ消えたのでしょう。

それぞれの式を見てください。
先頭の項は、整数型( 7 ) や 実数型( 3.0 ) で、いずれも数値型です。

つまり、式は数値型に合わせられるわけで、"Lucky" や "HSP" は数値の 0 に置き換えられたのです。


しかし、文字列型が数値型に合わせられるときは、必ず 0 になるわけではありません。

この場合は、先程とは違いますね。

しかしこれも、先程の例も含めて、
『ある型が異なる型に合わせられるときは、情報を出来る限り維持しようとする』という原理を考えれば理解できます。

7 + "650" の場合、HSPは "6" を 6 、"5" を 5 、"0" を 0 、最終的に "650" を 650 として考えます。

先程の "Lucky" の場合、 "L" を見て“これは数値型には置き換えられない”と判断し、 0 として考えたわけです。




このように、文字列型を数値型へ合わせるときは、先頭から数値へ置き換えていきます。

そして、数値型へ置き換えられない文字があった場合は、それ以降を無視します。





この例を見てください。

10 + "Hello, World!" は、"H" が数値に置き換えられないので 0 と判断し、それ以降は無視します。
つまり、 10 + 0 と同じです。

10 + "990" は、"9" を 9、"9" を 9、"0" を 0 、に置き換えます。
つまり、 10 + 990 と同じです。

10 + "355日" は、"3" を 3、"5" を 5、"5" を 5、に置き換えますが "日" は置き換えられませんので無視します。
つまり、 10 + 355 と同じです。

10 + "125abc9" は、"1" を 1、"2" を 2、"5" を 5、に置き換えますが、"a" は置き換えられないので、それ以降を無視します。
つまり、 10 + 125 と同じです。


型は、プログラマの目に見えないので、ミスの原因になることがよくあります。
重要ですので、しっかりと理解してから進んでください。

 




// Copyright (C) 2001-2007 NegativeCelcius. All Rights Reserved. //