私がint myInt1 = 02
とを持っている場合int myInt2 = 2
、一般的に、それらは文字列のように比較されるのでmyInt1 == myInt2
が返されますfalse
か、それとも、紙の上で計算を行っている場合と同じようにコンピューターが比較して を返しtrue
ますか?
3 に答える
他の人がコメントしているように、それは文脈と言語に完全に依存します. また、データ型にも依存します ( int, float, double
、一部の言語にはDecimal
、NSNumber
などがあります)。
ではObjective-C
、2 つNSNumber
の を と比較すると、通常、オブジェクトと==
同様に false が返されます。この場合、 と を比較するとメモリ アドレスが比較されるため、通常は が返されます。NSNumber
==
false
しかし、という点ではint
?ほとんどの場合、 というコード行があったとしてもint myNum = 002;
、言語はおそらく先頭のゼロを気にしません。先行ゼロは、単に出力の書式設定の問題である可能性があります。たとえば、printf("%03d",myNum)
対printf("%d",myNum)
。
これは、議論中のコンピューター言語に完全に依存し、(ここに示すように、プレフィックス 0 の特定のケースでは) n
-- の特定の値に少なくとも依存n
し0n
ます。
とはいえ、大部分のプログラミング言語では、数値は文字列とはまったく異なる方法で扱われます。整数の「2」の概念を表現する方法がいくつかある場合、それらは一般的にすべて同等です。2
とが同じだと言っているわけではありません2.0
。多くの言語では、それらはまったく異なります。
これは、言語の構文とセマンティクスがどのように定義されているかによって異なります。
どの言語について話しているのかは特定されていませんが、ほとんどの現代言語では数値が比較に使用されます。したがって、通常、例に入ることが期待さtrue
れます。