在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

while(1)和 for(;;)有什么區(qū)別

奈因PCB電路板設(shè)計(jì) ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2021-08-11 10:34 ? 次閱讀

有讀者提出了類(lèi)似這樣的問(wèn)題:while(1) 和 for(;;) 它們不都是無(wú)限循環(huán)嗎,作用應(yīng)該一樣啊,它們到底有什么區(qū)別?

要回答這個(gè)問(wèn)題,其實(shí)你各自編寫(xiě)一段while(1) 和 for(;;)的代碼,編譯對(duì)比一下代碼大小和匯編文件,你就大概知道了。

while(1)和for(;;)語(yǔ)法表達(dá)

這里先說(shuō)一下while(1)和for(;;)語(yǔ)法表達(dá)式。

1.while語(yǔ)法表達(dá)

while( 表達(dá)式 ){ 語(yǔ)句}

其中:

表達(dá)式:是循環(huán)條件

語(yǔ)句:為循環(huán)體。

while語(yǔ)句的語(yǔ)義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí), 執(zhí)行循環(huán)體語(yǔ)句。其執(zhí)行過(guò)程可用下圖表示:

2.for語(yǔ)法表達(dá)

for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3) { 語(yǔ)句}

它的執(zhí)行過(guò)程如下:

1.先求解表達(dá)式1

2.求解表達(dá)式2

若其值為真(非0),則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下面第3)步;

若其值為假(0),則結(jié)束循環(huán),轉(zhuǎn)到第5)步。

3.求解表達(dá)式3

4.轉(zhuǎn)回上面第2)步繼續(xù)執(zhí)行。

5.循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句。

while(1)和for(;;)異同點(diǎn)

這里先說(shuō)一下結(jié)論,然后再驗(yàn)證驗(yàn)證結(jié)論。

1.相同點(diǎn)作用和效果都一樣:都是實(shí)現(xiàn)無(wú)限循環(huán)的功能。

2.不同點(diǎn)while(1):其中括號(hào)里面是一個(gè)條件,程序會(huì)判斷真假。而括號(hào)里面的“1”永遠(yuǎn)是一個(gè)“真值”。

其中,每一次循環(huán),編譯器都要判斷常量1是不是等于零。

for(;;):這兩個(gè);;空語(yǔ)句,編譯器一般會(huì)優(yōu)化掉的,直接進(jìn)入死循環(huán)。

根據(jù)上面的描述,你可能會(huì)覺(jué)得:while(1) 比 for(;;) 要做更多事,匯編代碼更多,代碼量也更大。

但事實(shí)是這樣嗎?下面驗(yàn)證一下。

驗(yàn)證while(1)和for(;;)差異

我們編寫(xiě)分別兩個(gè)文件for.c和while.c,然后分別生成匯編代碼,看下情況。

1.源代碼while.c:

// filename: while.cint main(int argc, char const *argv[]){ while(1) {}

return 0;}

for.c:

// filename: for.cint main(int argc, char const *argv[]){ for(;;) {}

return 0;}

2.生成匯編我們這里使用gcc編譯器生成匯編,執(zhí)行命令如下:

gcc -S -o while.s while.cgcc -S -o for.s for.c

while匯編代碼:

; filename: whiles .file “while.c” .text .globl main .type main, @functionmain:.LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movq %rsi, -16(%rbp).L2: jmp .L2 .cfi_endproc.LFE0: .size main, 。-main .ident “GCC: (GNU) 9.3.0” .section .note.GNU-stack,“”,@progbits

for匯編代碼:

; filename: for.s .file “for.c” .text .globl main .type main, @functionmain:.LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movq %rsi, -16(%rbp).L2: jmp .L2 .cfi_endproc.LFE0: .size main, 。-main .ident “GCC: (GNU) 9.3.0” .section .note.GNU-stack,“”,@progbits

你會(huì)發(fā)現(xiàn),除了文件名不同,其余都相同。

當(dāng)然,這里額外說(shuō)一下,不同代碼、不同編譯器,以及不同優(yōu)化等級(jí),可能最終結(jié)果有所差異。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140548
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3685

    瀏覽量

    94915
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70305

原文標(biāo)題:while(1) 和 for ( ; ; )有什么區(qū)別?

文章出處:【微信號(hào):pcbgood,微信公眾號(hào):奈因PCB電路板設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    GD32與STM32什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供《GD32與STM32什么區(qū)別.docx》資料免費(fèi)下載
    發(fā)表于 04-03 17:27 ?0次下載

    ATX主板和ITX主板什么區(qū)別

    在計(jì)算機(jī)硬件領(lǐng)域,主板是承載計(jì)算機(jī)核心組件的關(guān)鍵部件,其類(lèi)型多樣,性能也各有千秋。那么ATX主板和ITX主板什么區(qū)別呢,下面來(lái)介紹一下:
    的頭像 發(fā)表于 03-03 08:47 ?537次閱讀

    私有云和公有云什么區(qū)別

    私有云和公有云在多個(gè)方面存在顯著的區(qū)別,以下是具體的比較,主機(jī)推薦小編為您整理發(fā)布私有云和公有云什么區(qū)別
    的頭像 發(fā)表于 02-20 10:38 ?613次閱讀

    AIGC和AI什么區(qū)別

    AIGC是AI在內(nèi)容生成領(lǐng)域的一個(gè)特定應(yīng)用方向,AI的技術(shù)發(fā)展為AIGC提供了基礎(chǔ)和支撐。那么,AIGC和AI什么區(qū)別呢?下面,AI部落小編帶您詳細(xì)了解。
    的頭像 發(fā)表于 02-20 10:33 ?701次閱讀

    請(qǐng)問(wèn)ADS8343和ADS8341什么區(qū)別

    請(qǐng)問(wèn)ADS8343和ADS8341什么區(qū)別
    發(fā)表于 01-08 06:30

    LMP91200 VCM和VCMHI引腳什么區(qū)別

    VCM和VCMHI引腳什么區(qū)別,是說(shuō)如果傳感器是高阻態(tài)的需要接VCMHI 嗎?
    發(fā)表于 12-31 07:36

    DAC7742和DAC7741什么區(qū)別?

    DAC7742和DAC7741什么區(qū)別?
    發(fā)表于 11-22 08:31

    FCCSP與FCBGA都是倒裝有什么區(qū)別

    本文簡(jiǎn)單介紹了倒裝芯片球柵陣列封裝與倒裝芯片級(jí)封裝的概念與區(qū)別。 FCCSP與FCBGA都是倒裝,怎么區(qū)分?什么區(qū)別
    的頭像 發(fā)表于 11-16 11:48 ?3770次閱讀
    FCCSP與FCBGA都是倒裝有<b class='flag-5'>什么區(qū)別</b>

    美國(guó)多IP服務(wù)器和美國(guó)多服務(wù)器什么區(qū)別

    美國(guó)多IP服務(wù)器和美國(guó)多服務(wù)器什么區(qū)別 美國(guó)多IP服務(wù)器和美國(guó)多服務(wù)器在概念、功能以及應(yīng)用場(chǎng)景上存在明顯的區(qū)別。主機(jī)推薦小編為您整理發(fā)布美國(guó)多IP服務(wù)器和美國(guó)多服務(wù)器
    的頭像 發(fā)表于 11-11 10:22 ?601次閱讀

    RTOS與Linux到底什么區(qū)別

    很多做嵌入式開(kāi)發(fā)的小伙伴都存在這樣的疑惑:RTOS與Linux到底什么區(qū)別
    的頭像 發(fā)表于 10-29 09:53 ?1120次閱讀

    功放和運(yùn)放到底是什么區(qū)別

    想請(qǐng)問(wèn)一下功放和運(yùn)放到底是什么區(qū)別,感覺(jué)只要接一個(gè)小負(fù)載,運(yùn)放的輸出電流也可以很大啊?到底什么區(qū)別
    發(fā)表于 09-10 07:00

    請(qǐng)問(wèn)VCA821和VCA824什么區(qū)別

    請(qǐng)問(wèn)VCA821和VCA824什么區(qū)別??jī)蓚€(gè)芯片的概述基本都一樣,但是細(xì)看里面的資料會(huì)發(fā)現(xiàn)一些參數(shù)圖表好像是不一樣的。那到底怎么看,什么區(qū)別
    發(fā)表于 09-05 07:59

    請(qǐng)問(wèn)模擬開(kāi)關(guān)跟多路復(fù)用器什么區(qū)別

    我想請(qǐng)問(wèn),模擬開(kāi)關(guān)跟多路復(fù)用器什么區(qū)別。比如單刀雙擲開(kāi)關(guān),是不是就是2選1的多路選擇器,只是模擬開(kāi)關(guān)是1:2,AMUX是2:1?我理解的
    發(fā)表于 08-12 08:16

    請(qǐng)問(wèn)ESPTOUCH和AIRKISS什么區(qū)別

    請(qǐng)問(wèn)ESPTOUCH和AIRKISS什么區(qū)別?謝謝!
    發(fā)表于 07-12 12:44

    RV 和ARM什么區(qū)別

    district RV 和ARM什么區(qū)別
    發(fā)表于 06-26 12:41
    主站蜘蛛池模板: 视频在线免费看 | 五月婷婷色综合 | 性视频久久 | 国产精品资源在线播放 | 欧美日韩中文字幕 | 特黄三级| 成人欧美一区二区三区的电影 | 四虎网站在线播放 | 日本黄色影片在线观看 | 欧美亚洲另类在线观看 | 久久99久久精品国产99热 | 国产精品久久久久久福利 | 亚洲性人人天天夜夜摸 | 欧美高清一区 | 色网址在线 | 国产成人精品视频一区二区不卡 | 成人亚洲视频 | 日韩中文电影 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片男 | 日本一本视频 | 四虎影院一区二区 | 福利视频免费看 | 一色屋成人免费精品网站 | 特级黄aaaaaaaaa毛片 | 国产在线精品香蕉综合网一区 | 色婷婷六月丁香在线观看 | 成人黄色在线 | 黑人一区二区三区中文字幕 | 欧美一区二区三区在线观看免费 | 人人干视频在线观看 | 婷婷久久综合九色综合九七 | 奇米精品 | 韩国三级床戏合集 | 天天上天天干 | 天天视频官网天天视频在线 | 久久国产视频一区 | 国产一级大片在线观看 | 色婷婷色婷婷 | 亚洲 欧美 视频 | 免费人成黄页在线观看1024 | 欧美精品 在线播放 |