はてなキーワード: 排他的論理和とは
どうーでもいいーですよー。
どうでもいい話ー、聞いてください。
Perlというやつは一応内部的には数値か文字列かをちゃんと分けて変数の管理をしているのです。
でわ、現在ある変数が内部的に数値なのか?内部的に文字列なのか?判別しようと思ったらどうしますか?
こうしてみます。
my @data = (
100, # 100は内部的に数値
'200' # 200は内部的に文字
);
foreach my $d ( @data ) {
if( ($d ^ $d) eq '0' ){
print $d . " = It's numeric\n";
}
else {
print $d . " = It's string\n";
}
}
同じ変数同士を排他的論理和(^)すると、その変数が数値の場合は0になり、その変数が文字列の場合は空文字になるのです。
なぜかって?そりゃ同じ値同士で排他的論理和したら必ず00000000になるでしょう?
で00000000は、数値なら数字の0だし、文字列なら制御コードのNUL文字になるので上記のような処理が成り立つというわけです。
あってますよね?
ってか判別できたからなんだというんだと問われたらぐうの音すら出ません。まったくもってどうでもいい話でした。