5
|
csharptest.net · 技术社区 · 15 年前 |
1
4
以下是正在发生的事情: 取新的int[]{2,4},让我们将其编组为A、B、breaked和brokern2。 如果我们将int封送到这些结构中,我们将在内存中获得以下值:
因此,发生的情况如下:
对于A,第一个int被转换成1,对于B,第二个int被转换成1, 对于breake,由于B是最后一个字段,因此其规则适用,因此第二个int被转换为1。Brokern2的情况也类似。 |
2
1
注释为“FAILS,WOW,WTF?”的行由于执行布尔比较的方式而失败。它将2与1进行比较:
ceq 最后将1与bValue中的字节(即2)进行比较。 有趣的是 将测试“true”,因为它不是零。 至于另一个问题(breaked.a.iValue2==4),当我申请时,它消失了:
到结构中的两个布尔字段。这确保布尔值被封送为整数(在.NET中为4字节)。 |
3
0
这似乎是正确的,因为添加了另一个ints结构:
|
Mike Bruno · 访问模拟帐户的私钥 7 年前 |
John · 通过P/Invoke使用回调和堆对象的安全方法 8 年前 |
Residuum · 带有P/Invoke和指针的泛型 8 年前 |
hl3mukkel · 约束与使用SafeHandle的抽象类 9 年前 |