我有一个带有int参数的COM服务器函数。当我在Matlab中调用该函数并传入“true”作为参数时,C ++会将传入的“true”值计算为-1,以获取我的int参数(我正在逐步执行我的代码)。
当我传入“false”时,它评估为0就好了。
我这样做是因为我过去只允许此参数使用true或false值,但是现在我接受0-4的输入,所以我保持输入0和1的逻辑相同,以便向后兼容。
我只是不明白为什么“真实”值的评估结果为-1!
答案 0 :(得分:2)
从http://msdn.microsoft.com/en-us/library/t2t3725f.aspx开始:布尔类型编组的默认格式是UnmanagedType.VariantBool,它是
2字节整数值,其中值-1表示真和0 表示错误