問題タブ [explicit-conversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
103 参照

c# - C# 5.0 の明示的な数値変換の記述は正しいですか?

次のように、float および double から C# 5.0 仕様 (段落 6.2.1) で説明されている任意の整数型への明示的な数値変換。

• float または double から整数型への変換の場合、処理は、変換が行われるオーバーフロー チェック コンテキスト (§7.6.12) によって異なります。

同時に、次のようにMSDNで説明されている同じ変換のルール:

double または float 値から整数型に変換すると、値が切り捨てられます。結果の整数値が宛先値の範囲外である場合、結果はオーバーフロー チェック コンテキストに依存します。チェックされたコンテキストでは、OverflowException がスローされますが、チェックされていないコンテキストでは、結果は宛先タイプの未指定の値になります。

このような変換を評価すると、たとえば "(int)123.566" は "123" になります。仕様書の記載は正しいですか?

0 投票する
1 に答える
259 参照

sql - Access ADODB から SQL Server ストアド プロシージャを実行する際の変換エラー

次のコードは、SQL Server 2008 のプロシージャに格納され、MS Access の ADODB を使用して実行されます。アクセスで実行しようとすると、次のエラーが表示されます...

実行時エラー -2147217913(80040e07)
[Microsoft][ODBC SQL Server Driver][SQL Server]
nvarchar 値 'fldNumericData' をデータ型 int に変換するときに変換に失敗しました。

fldNumeric値 0、1、2、3、4、および 5 のみを保持しますが、次のステートメントは失敗します...

0 投票する
3 に答える
489 参照

c++ - C++ の明示的な型キャストが間違った答えを返す

c++ で int から float への変換が間違っているのはなぜですか? プログラムのある時点で、値が 10 または 14 の整数を float に明示的に変換すると、0 になります。なぜでしょうか? static_cast を試してみましたが、同じ結果が得られました。int と float の両方が 4 バイトであるため、int から float への変換はサイズによる降格または昇格ではないと考えていますか? 丸め誤差などに関連していますか?誰か説明してくれませんか。

これがコードです(ここには変更があり、正常に機能しますが、理由はまだわかりません)---

コンパイルするコマンド -> g++ 3.2.cpp -o 3.2

入力: n = 4; 要素 = 1 2 3 4

私が見落としているのは些細なことのように感じます。

助けてくれてありがとう。

0 投票する
1 に答える
769 参照

c++ - この明示的な変換演算子が g++ では機能するのに、Visual Studio 2013 では機能しないのはなぜですか?

次の例には、度とラジアンを表す 2 つのテンプレート化されたクラスが含まれており、それらの間でキャストする明示的な変換演算子があります。g++ ( ideone リンクVisual C++ Compiler Nov 2013 CTP (CTP_Nov2013)) でコンパイルおよび実行されますが、プラットフォーム ツールセットとしてVisual Studio 2013 では実行されません。

Visual Studio のエラー出力:

どうしたの?g++ では機能するのに、Visual Studio 2013 では機能しないのはなぜですか? どのコンパイラが正しいことをしていますか?

0 投票する
3 に答える
2278 参照

c# - 犬から人間の年、またはその逆

この例の問題を試しています。ここでは、2 つの暗黙的な変換演算子を作成して、Human から Doggy クラスを作成する必要があり、その逆も同様です。クラスでは、人間の 1 年が犬の 7 年であることを考慮する必要があります。犬の年から人間の年に移行する場合、年齢の型がまだ int であることを確認するために (もちろん)、明示的な変換が必要になる可能性があると言われました。DogToHuman.Name、DogToHuman.Age、HumanToDog.Name、HumanToDog.Age の定義方法がわかりません。私はプログラミングに慣れていないので、この形式には慣れていません。人間の年齢の 25 歳のように、どんな数字から始めても問題ありません。

混乱して申し訳ありません。私は答えを探しているだけではなく、どうすればよいかをもっと探していました。

0 投票する
1 に答える
1917 参照

c++ - 一般的な変換演算子のテンプレートとムーブ セマンティクス: ユニバーサル ソリューションはありますか?

これは、アクション中の Explicit ref-qualified conversion operator テンプレートのフォローアップです。私はさまざまなオプションを試しましたが、最終的に解決策があるかどうかを確認するために、ここでいくつかの結果を示しています.

クラス (たとえばany ) が、移動のセマンティクスを保持する、便利で安全な (驚くことのない) 方法で、可能な型への変換を提供する必要があるとします。4つの異なる方法を考えることができます。

最も問題のあるケースは、オブジェクトまたはオブジェクトへの右辺値参照を初期化することです。一時的参照または右辺値参照が与えられます。関数呼び出しはすべてのケースで機能しますが (私はそう思います)、冗長すぎると思います:

そこで、次に変換演算子を試します。

const&オーバーロードは右辺値で呼び出し可能であるように見えますが、これはあいまいさを与え、唯一のオプションとして暗黙的な変換によるコピー初期化を残しています。

ただし、次のそれほど単純ではないクラスを検討してください。

入力引数を特定の型に暗黙的または明示的に変換できるかどうかに応じて、一般的な暗黙的または明示的なコンストラクターを提供します。そのようなロジックはそれほど風変わりなものではありません。たとえば、一部の実装はstd::tupleそのようになる可能性があります。今、初期化するD

さまざまな理由から、暗黙的な変換による直接初期化オプションのみが利用可能です。ただし、これはまさに暗黙の変換が危険な場所です。b実際には、Dコンテナの一種である可能性のある が含まれている可能性がありますが、動作中の組み合わせはDのコンストラクタを完全一致として呼び出しており、コンテナbの偽の要素のように動作し、実行時エラーまたは災害を引き起こしています。

最後に、右辺値参照を初期化してみましょう。

すべてのユースケースには独自の要件があり、すべてのケースで機能する組み合わせはないようです。

さらに悪いことに、上記の結果はすべて clang 3.3 のものです。他のコンパイラとバージョンでは、わずかに異なる結果が得られますが、ここでも普遍的な解決策はありません。例: live example

だから:何かが望みどおりに機能する可能性はありますか、それとも変換演算子をあきらめて明示的な関数呼び出しに固執する必要がありますか?

0 投票する
3 に答える
89 参照

c# - C#での継承による奇妙な動作

私は C# にまったく慣れていないので、私の質問がばかげているように聞こえる場合は、私の無知をご容赦ください。

-Inheritance Funda をで試してみたC#ところ、動作がおかしいことがわかったので、 でチェックしてみるとJava、期待どおりの結果が得られました。

-ここに欠けているものがあるか知りたいだけです........

C# コード:

出力:

ジャバコード:

出力:

-今、このエピソード全体についての私の疑問は..C#私はタイプDog objectのオブジェクト参照変数に割り当てています.onメソッドを呼び出すと、(Dogクラスのオーバーライドされたメソッド)として出力を取得する必要がありますが、代わりにメソッドとして出力を与えて呼び出されます。aAnimalSound()abarkingAnimal's Sound()I don't make any sound

-しかし、Java物事は期待どおりに機能しています..継承はどこでも同じように機能します。

誰かが私を助けてくれるなら、私は義務付けられます...... よろしくお願いします。

0 投票する
1 に答える
1576 参照

c++ - XmlRpcValue の double への明示的なキャスト

XmlRpc::XmlRpcValue を double 値にキャストしようとしています。暗黙的なキャスト方法は機能しなかったため、明示的にキャストする必要があります。ただし、3 つの明示的なキャスト タイプのいずれも動作させることができません。

XmlRpcValue は double のベクトルのベクトルです。.yaml ファイルでは、フィールドは次のようになります。

次に、各値を double に読み込みます。私は次のことを試しました:

static_cast、reinterpret_cast、および dynamic_cast を使用します。明示的なカーストですべてを完全に理解しているとは思えませんが、必要なものは static_cast だと思います。何が起こるかを見るためだけに、ダイナミックと再解釈を試みました。それらはすべて、次のメッセージで失敗しました。

static - タイプ 'const XmlRpc::XmlRpcValue' からタイプ 'double' への無効な static_cast</p>

再解釈 - エラー: 型 'const XmlRpc::XmlRpcValue' から型 'double' への無効なキャスト</p>

動的 - dynamic_cast '(& dof.XmlRpc::XmlRpcValue::operator)->XmlRpc::XmlRpcValue::operator' ('const class XmlRpc::XmlRpcValue' 型) を 'double' 型 (ターゲットがポインターではないか、または参照)

誰かがこれで私を助けることができれば、私はそれを大いに感謝します.

編集:

std::vector< std::vector > に static_cast しようとしました。コンパイルに失敗しました: