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