无限循环当然数c语言,c++ - C / C ++中的无限循环[关闭] - 堆栈内存溢出

每个人似乎都喜欢while (true) :

根据SLaks的说法 ,他们编译相同。

它并不快。 如果您真的关心,请使用您的平台的汇编程序输出进行编译,并查看。 没关系。 这永远不重要。 写下你喜欢的无限循环。

作为对用户1216838的回应,这是我尝试重现他的结果。

这是我的机器:

cat /etc/*-release

CentOS release 6.4 (Final)

gcc版本:

Target: x86_64-unknown-linux-gnu

Thread model: posix

gcc version 4.8.2 (GCC)

和测试文件:

// testing.cpp

#include

int main() {

do { break; } while(1);

}

// testing2.cpp

#include

int main() {

while(1) { break; }

}

// testing3.cpp

#include

int main() {

while(true) { break; }

}

命令:

gcc -S -o test1.asm testing.cpp

gcc -S -o test2.asm testing2.cpp

gcc -S -o test3.asm testing3.cpp

cmp test1.asm test2.asm

唯一的区别是第一行,即文件名。

test1.asm test2.asm differ: byte 16, line 1

输出:

.file "testing2.cpp"

.local _ZStL8__ioinit

.comm _ZStL8__ioinit,1,1

.text

.globl main

.type main, @function

main:

.LFB969:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

nop

movl $0, %eax

popq %rbp

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE969:

.size main, .-main

.type _Z41__static_initialization_and_destruction_0ii, @function

_Z41__static_initialization_and_destruction_0ii:

.LFB970:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

subq $16, %rsp

movl %edi, -4(%rbp)

movl %esi, -8(%rbp)

cmpl $1, -4(%rbp)

jne .L3

cmpl $65535, -8(%rbp)

jne .L3

movl $_ZStL8__ioinit, %edi

call _ZNSt8ios_base4InitC1Ev

movl $__dso_handle, %edx

movl $_ZStL8__ioinit, %esi

movl $_ZNSt8ios_base4InitD1Ev, %edi

call __cxa_atexit

.L3:

leave

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE970:

.size _Z41__static_initialization_and_destruction_0ii, .-_Z41__static_initialization_and_destruction_0ii

.type _GLOBAL__sub_I_main, @function

_GLOBAL__sub_I_main:

.LFB971:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

movl $65535, %esi

movl $1, %edi

call _Z41__static_initialization_and_destruction_0ii

popq %rbp

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE971:

.size _GLOBAL__sub_I_main, .-_GLOBAL__sub_I_main

.section .ctors,"aw",@progbits

.align 8

.quad _GLOBAL__sub_I_main

.hidden __dso_handle

.ident "GCC: (GNU) 4.8.2"

.section .note.GNU-stack,"",@progbits

使用-O3 ,输出当然要小得多,但仍然没有区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值