VS2015中的一个编译问题

A compilation problems in VS2015

   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

在我的环境中,一个 int 占用 4 个字节,一个 short 占用 2 个字节,所以在 movsx 指令中,为什么有一个字节而不是一个字?希望有人能帮助我!

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

一个char是一个字节。 static_casta 转换为 char。一个字节。因此,char-cast 变量 a 的一字节值被移动到 ax.