日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guā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)載。文章觀(guā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)注

    183

    文章

    7646

    瀏覽量

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

    關(guān)注

    90

    文章

    3724

    瀏覽量

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74419

原文標(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)推薦

    Boost、Buck-Boost、Sepic拓?fù)?b class='flag-5'>有什么區(qū)別

    工程師們?cè)谧鲭娫丛O(shè)計(jì)時(shí)經(jīng)常會(huì)有升壓的需求,而常用的Boost、Buck-Boost、Sepic拓?fù)渚蓪?shí)現(xiàn)升壓。這些拓?fù)?b class='flag-5'>有什么區(qū)別,該選哪個(gè)呢?
    的頭像 發(fā)表于 04-11 14:14 ?1113次閱讀
    Boost、Buck-Boost、Sepic拓?fù)?b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    如何電源管理電池供電和線(xiàn)路供電系統(tǒng)之間什么區(qū)別?

    如何電源管理電池供電和線(xiàn)路供電系統(tǒng)之間什么區(qū)別
    發(fā)表于 04-06 08:24

    請(qǐng)問(wèn)TJA1028DT/0 和 TJA1028x/5/20 什么區(qū)別?

    TJA1028DT/0 和 TJA1028x/5/20 什么區(qū)別
    發(fā)表于 03-20 07:41

    行星減速機(jī)與齒輪減速機(jī)什么區(qū)別?

    行星減速機(jī)與齒輪減速機(jī)什么區(qū)別
    的頭像 發(fā)表于 01-04 16:30 ?1816次閱讀
    行星減速機(jī)與齒輪減速機(jī)<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    武漢芯源MCU和英飛凌MCU什么區(qū)別

    武漢芯源MCU和英飛凌MCU什么區(qū)別
    發(fā)表于 12-11 06:26

    MCU不同封裝都什么區(qū)別?

    目前MCU不同封裝都什么區(qū)別
    發(fā)表于 12-01 06:41

    請(qǐng)問(wèn)jtag和jlink什么區(qū)別啊?

    jtag和jlink什么區(qū)別?。?/div>
    發(fā)表于 11-28 06:46

    高壓探棒和高壓差分探頭什么區(qū)別?

    我們?cè)谑褂霉β史糯笃鞣糯笮盘?hào),或是需要檢測(cè)信號(hào)的時(shí)候,可能都會(huì)用到這樣一個(gè)測(cè)試測(cè)量設(shè)備,那就是高壓探棒和高壓差分探頭,那么你知道高壓探棒和高壓差分探頭什么區(qū)別嗎?一、高壓探棒和差分探頭的基本概念
    的頭像 發(fā)表于 11-19 08:38 ?730次閱讀
    高壓探棒和高壓差分探頭<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    ARM架構(gòu)與DSP什么區(qū)別?哪一個(gè)更好?

    ARM架構(gòu)與DSP什么區(qū)別?哪一個(gè)更好?
    發(fā)表于 11-19 06:14

    微波雷達(dá)和毫米波雷達(dá)什么區(qū)別

    微波雷達(dá)和毫米波雷達(dá)什么區(qū)別 前言:不知道大家有沒(méi)有發(fā)現(xiàn),各種雷達(dá)模塊的使用開(kāi)始逐漸加入各種智能家居產(chǎn)品了,像人來(lái)燈亮,人走燈滅這種雷達(dá)感應(yīng)的產(chǎn)品早幾年就開(kāi)始進(jìn)入市場(chǎng)了,還有各種感應(yīng)開(kāi)關(guān)等產(chǎn)品
    的頭像 發(fā)表于 10-30 16:56 ?2302次閱讀
    微波雷達(dá)和毫米波雷達(dá)<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    Re-Driver 和 Re-Timer 什么區(qū)別?

    Re-Driver 和 Re-Timer 什么區(qū)別?
    發(fā)表于 08-21 06:14

    使用ICP編程工具進(jìn)行離線(xiàn)編程設(shè)置時(shí),啟用“使用密碼”什么區(qū)別

    使用ICP編程工具進(jìn)行離線(xiàn)編程設(shè)置時(shí),啟用“使用密碼”什么區(qū)別
    發(fā)表于 08-19 06:04

    請(qǐng)問(wèn)ST7701和ST7701S什么區(qū)別嗎?

    ST7701和ST7701S什么區(qū)別
    發(fā)表于 07-22 08:16

    請(qǐng)問(wèn)CYW2019B2的SPI1與SPI2什么區(qū)別?

    請(qǐng)問(wèn): CYW2019B2的SPI1與SPI2什么區(qū)別?SPI接口工作于Slave方式,接收外設(shè)的數(shù)據(jù)。如果設(shè)為SPI1可以正常工作;設(shè)為SPI2也可以接收全部數(shù)據(jù),但是順序不對(duì),請(qǐng)
    發(fā)表于 07-08 07:51

    sd-wan組網(wǎng)方案和woc設(shè)備有什么區(qū)別

    SD-WAN組網(wǎng)方案和WOC(廣域網(wǎng)優(yōu)化控制器)設(shè)備是解決企業(yè)廣域網(wǎng)(WAN)問(wèn)題的兩種不同技術(shù)路線(xiàn),它們的目標(biāo)部分重疊(提升性能、降低成本),但核心原理、實(shí)現(xiàn)方式和側(cè)重點(diǎn)顯著區(qū)別,主機(jī)推薦小編為您整理發(fā)布sd-wan組網(wǎng)方案和woc設(shè)備有
    的頭像 發(fā)表于 06-03 11:21 ?1236次閱讀
    sd-wan組網(wǎng)方案和woc設(shè)備有<b class='flag-5'>什么區(qū)別</b>
    辽宁省| 乐平市| 红安县| 乐山市| 大名县| 乌兰浩特市| 凌海市| 图们市| 宜宾市| 天镇县| 定州市| 六安市| 扎囊县| 阿瓦提县| 博罗县| 阿图什市| 广宗县| 蓝山县| 东阳市| 德保县| 罗甸县| 峨边| 越西县| 仲巴县| 岳池县| 儋州市| 抚州市| 赤壁市| 沾化县| 正宁县| 军事| 介休市| 南郑县| 岑巩县| 寻甸| 四子王旗| 泾川县| 和林格尔县| 白河县| 县级市| 博爱县|