三目运算符c语言吗,看看三目运算符?:到底是怎么回事

我用 gcc 在没有任何优化的条件下编译了一下。

不过 GNU 用的是 AT&T 的语法,和 intel 语法稍微有点区别。

主要是 mov a,b 是指把 a 存入 b。其它的在这里好像没体现。

这个是用三目运算符的。明显比你的那个要好一些。

401428:    c7 44 24 0c 01 00 00     movl   $0x1,0xc(%esp)

40142f:    00

401430:    c7 44 24 08 02 00 00     movl   $0x2,0x8(%esp)

401437:    00

401438:    8b 54 24 0c              mov    0xc(%esp),%edx

40143c:    8b 44 24 08              mov    0x8(%esp),%eax

401440:    39 d0                    cmp    %edx,%eax

401442:    7d 02                    jge    401446 <_main>

401444:    89 d0                    mov    %edx,%eax

401446:    89 44 24 04              mov    %eax,0x4(%esp)

40144a:    b8 00 00 00 00           mov    $0x0,%eax

40144f:    c9                       leave

401450:    c3                       ret

401451:    90                       nop

401452:    90                       nop

401453:    90                       nop

...

下面是用 if else 的。这个和你那第二个没有任何区别。

401428:    c7 44 24 0c 01 00 00     movl   $0x1,0xc(%esp)

40142f:    00

401430:    c7 44 24 08 02 00 00     movl   $0x2,0x8(%esp)

401437:    00

401438:    8b 44 24 0c              mov    0xc(%esp),%eax

40143c:    3b 44 24 08              cmp    0x8(%esp),%eax

401440:    7e 0a                    jle    40144c <_main>

401442:    8b 44 24 0c              mov    0xc(%esp),%eax

401446:    89 44 24 04              mov    %eax,0x4(%esp)

40144a:    eb 08                    jmp    401454 <_main>

40144c:    8b 44 24 08              mov    0x8(%esp),%eax

401450:    89 44 24 04              mov    %eax,0x4(%esp)

401454:    b8 00 00 00 00           mov    $0x0,%eax

401459:    c9                       leave

40145a:    c3                       ret

40145b:    90                       nop

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值