Java
、、、などの言語でc++
は、switch-case ステートメントで整数型に評価される型または式を使用できます。[c
一部c#
の言語では、リテラルやその他の型が使用できます]integral
string
型のみ、または限られた数integral
の型を使用する必要があるdouble
のはなぜfloat
ですか?
Java
、、、などの言語でc++
は、switch-case ステートメントで整数型に評価される型または式を使用できます。[c
一部c#
の言語では、リテラルやその他の型が使用できます]integral
string
型のみ、または限られた数integral
の型を使用する必要があるdouble
のはなぜfloat
ですか?
まず、Java 7 では文字列値を切り替えることができます...そして C# も同様です。(そして、Java では、スイッチをオンにすることはできませんlong
... ピーターに思い出させてくれてありがとう。)
ただし、スイッチをオンにして許可されていない理由はfloat
、double
丸め誤差と浮動小数点数の不正確な表現の潜在的な影響により、浮動小数点スイッチを使用するコードが非常にエラーが発生しやすくなる可能性が最も高い...またはエラーを表現するための特別な構文が必要になるためです。値の境界case
。
浮動小数点値を切り替えるための適切なユースケースがたくさんある場合、これをサポートする言語があると予想されます。しかし、私の知る限り、プログラミング言語の主流がこの道をたどったことはありません。
C++ の場合、switch
/case
の機能をレプリケートすることは想定されていないためですif
。コードで許可されている場合に、効率的な「ジャンプテーブル」を取得する方法を提供することになっている場合。