0

int パラメーターを持つ COM サーバー関数があります。Matlab で関数を呼び出して引数として "true" を渡すと、C++ は渡された "true" 値を int パラメーターの -1 に評価します (コードをステップ実行しています)。

「false」を渡すと、問題なく 0 と評価されます。

以前はこのパラメーターに true または false の値のみを許可していたため、これを行っていますが、現在は int 0 ~ 4 を受け入れるため、下位互換性のために入力 0 と 1 で同じロジックを維持しています。

「真」の値が -1 と評価される理由がわかりません。

4

1 に答える 1

2

http://msdn.microsoft.com/en-us/library/t2t3725f.aspxから: ブール型のマーシャリングの既定の形式は UnmanagedType.VariantBool です。

値 -1 が true を表し、0 が false を表す 2 バイトの整数値

于 2013-05-10T19:13:20.697 に答える