7

Java、、、などの言語でc++は、switch-case ステートメントで整数型に評価される型または式を使用できます。[c一部c#の言語では、リテラルやその他の型が使用できます]integralstring

型のみ、または限られたintegralの型を使用する必要があるdoubleのはなぜfloatですか?

4

2 に答える 2

16

まず、Java 7 では文字列値を切り替えることができます...そして C# も同様です。(そして、Java では、スイッチをオンにすることはできませんlong... ピーターに思い出させてくれてありがとう。)

ただし、スイッチをオンにして許可されていない理由はfloatdouble丸め誤差と浮動小数点数の不正確な表現の潜在的な影響により、浮動小数点スイッチを使用するコードが非常にエラーが発生しやすくなる可能性が最も高い...またはエラーを表現するための特別な構文が必要になるためです。値の境界case

浮動小数点値を切り替えるための適切なユースケースがたくさんある場合、これをサポートする言語があると予想されます。しかし、私の知る限り、プログラミング言語の主流がこの道をたどったことはありません。

于 2013-01-14T10:26:31.853 に答える
6

C++ の場合、switch/caseの機能をレプリケートすることは想定されていないためですif。コードで許可されている場合に、効率的な「ジャンプテーブル」を取得する方法を提供することになっている場合。

于 2013-01-14T10:42:30.387 に答える