【发布时间】:2013-04-21 00:22:56
【问题描述】:
在 Visual Studio 编译以下 C 代码时,结果为 4。
void main() { int c = 1; c = c<<34;}
从 Visual Studio 反汇编窗口中看到的汇编代码是
shl eax,22h
从汇编中,很容易看出我们正在移位 34。由于这里的整数是 4 字节,从结果可以看出,在机器级别进行了模运算,使其工作为移位 2。
我想知道这种行为是跨平台标准化还是因平台而异?
【问题讨论】:
-
如果我们将 main 声明为
void main() {...}会怎样? -
你在什么架构下运行程序? i386 ?
-
它的 x86-64 但我的窗口是 32 位的。
-
@wildplasser 带有这些点,它会给出编译错误