21 123
发新话题
打印

【讨论】-1 左移 32 位结果还是 -1?

跟俺的差不多啊
复制内容到剪贴板
代码:
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4227 0] #[/color] cat foo.c
#include <stdio.h>

int main()
{
    int n = 32;

    printf("%d\n", -1 << n);

    return 0;
}
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4227 0] #[/color] gcc -S foo.c
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4227 0] #[/color] cat foo.s
        .file   "foo.c"
        .section        .rodata
.LC0:
        .string "%d\n"
        .text
.globl main
        .type   main, @function
main:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $24, %esp
        andl    $-16, %esp
        movl    $0, %eax
        addl    $15, %eax
        addl    $15, %eax
        shrl    $4, %eax
        sall    $4, %eax
        subl    %eax, %esp
        movl    $32, -4(%ebp)
        movl    -4(%ebp), %ecx
        movl    $-1, %eax
        sall    %cl, %eax
        movl    %eax, 4(%esp)
        movl    $.LC0, (%esp)
        call    printf
        movl    $0, %eax
        leave
        ret
        .size   main, .-main
        .ident  "GCC: (GNU) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)"
        .section        .note.GNU-stack,"",@progbits
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4227 0] #[/color] o
      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

 21 123
发新话题