让我们来看看真相(clang):
1 foo(int, int, int, int): # @foo(int, int, int, int)
2 cmpl %esi, %edi
3 jge .LBB0_1
4 cmpl %edx, %esi
5 setl %sil
6 cmpl %ecx, %edx
7 setl %al
8 andb %sil, %al
9 ret
10 .LBB0_1:
11 xorl %eax, %eax
12 ret
13
14 bar(int, int, int, int): # @bar(int, int, int, int)
15 addl %esi, %edi
16 leal (%rdi,%rdx), %eax
17 addl %ecx, %eax
18 ret
和手写的完全没差噢, 稍微是丑一点,不过你看下CL的汇编, 肯定比C++的慢…(逃
最后,这有啥用?
多参数加法似乎是没啥用处了,还不如写a+b+c+d呢
多参数比较还行
a < b and b < c and c < d