0
   127:    int a = 2815;
00007FF78B5126EE  mov dword ptr [a],0AFFh
   128:
   129:    short c = static_cast<char>(a);
00007FF78B5126F5  movsx    ax,byte ptr [a]
00007FF78B5126FA  mov      word ptr [c],ax

在我的环境中,anint需要 4 个字节,而 short 需要 2,所以在movsx指令中,为什么有一个字节而不是一个字?希望可以有人帮帮我!

4

2 回答 2

1

Achar是一个字节。static_cast强制转换a为. char一个字节。char因此, -cast 变量的一字节值a被移入ax.

于 2018-05-28T14:00:52.147 回答
0

它移动 int 的最低字节a,因为这就是static_cast<char>给你的。

于 2018-05-28T14:00:47.010 回答