"Есть ли различия в скомпилированном коде между" является плохим началом в любом случае. Вывод сборки не указан стандартом C++, за исключением того, что он должен отражать правила, объявленные в стандарте. С одним миллионом или без него между каждой инструкцией - в большинстве случаев это одинаково соответствует. Поэтому, используя стандарт как ссылку, вы ничего не можете сказать о фактическом сборе, потому что он зависит от используемого фактического компилятора.
Для вопросов, касающихся, вам необходимо указать компилятор &, ОС, архитектуру и т. Д. В противном случае просто скомпилируйте и сравните сборку самостоятельно.
В любом случае, для решения вашего актуального вопроса выход не должен отличаться на достойном компиляторе.
На моей машине x86-64 с GCC 5.2.0:
Первое:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 f8 mov %edi,%eax
6: 88 45 fc mov %al,-0x4(%rbp)
9: 80 7d fc 00 cmpb $0x0,-0x4(%rbp)
d: 74 0a je 19 <_Z5func0b+0x19>
f: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0
16: 00
17: eb 08 jmp 21 <_Z5func0b+0x21>
19: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0
20: 00
21: 5d pop %rbp
22: c3 retq
Второе:
23: 55 push %rbp
24: 48 89 e5 mov %rsp,%rbp
27: 89 f8 mov %edi,%eax
29: 88 45 fc mov %al,-0x4(%rbp)
2c: 80 7d fc 00 cmpb $0x0,-0x4(%rbp)
30: 74 0a je 3c <_Z5func1b+0x19>
32: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0
39: 00
3a: eb 08 jmp 44 <_Z5func1b+0x21>
3c: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0
43: 00
44: 5d pop %rbp
45: c3 retq
Не отличаются.
Чтобы улучшить читаемость, удалите ';' after '}'. – SergeyA
Ну, вы можете скомпилировать его и посмотреть на сборку, чтобы узнать. – NathanOliver
@NathanOliver Я не знаю, как это работает. Это легко? – myfirsttime1