java語言中if語句的處理流程 選擇分支結(jié)構(gòu)中的if語句有幾種形式?
選擇分支結(jié)構(gòu)中的if語句有幾種形式?switch(變量名或變量表達(dá)式){case1:...;case2:...;case3:...;;default:...;}上面的case后跟的數(shù)不肯定會(huì)是1~n,
選擇分支結(jié)構(gòu)中的if語句有幾種形式?
switch(變量名或變量表達(dá)式){case1:...;case2:...;case3:...;;default:...;}上面的case后跟的數(shù)不肯定會(huì)是1~n,只要是判斷的數(shù)就可以,與上面switch括號內(nèi)的變量不對應(yīng),普通if(變量數(shù)),假如是必須只作為輸出case后的一句不需要在每一個(gè)case后加一個(gè)break。2if語句在用分支的時(shí)候,自由性大點(diǎn),條件也可以寫一個(gè)范圍也可又是一個(gè)表達(dá)式而switch則是一些應(yīng)用比較比較不功不過的類型。但這在一些判斷中則可以不互相替代之
在C語言的if語句中,用做判斷的表達(dá)式是什么表達(dá)式?
一般情況下這個(gè)是選邏輯表達(dá)式的。是因?yàn)閕f是邏輯判斷,但如果不是裝在c和C語言中,所有非零運(yùn)算結(jié)果均識為true,何消噬靈鬼斬轉(zhuǎn)換的,所以我這里選d是正確的的??墒窃谄渌Z言中是不正確的。
它通??疾榈膬?nèi)容那是,C/CPP中完全沒有唯一的布爾值,只不過是將非零數(shù)當(dāng)做寶貝false而己。所以你也可以再理解為elsif是可以確定非零數(shù)即可,或則明白為其它。只不過,在C/CPP中的布爾值是用int它表示的。也就是16位進(jìn)制數(shù)它表示,并不是什么單純的個(gè)bit。
如inta5if(a)語句塊;該代碼在C/CPP中是合法的,可是C#中是不合法的,難以通過編譯器編譯。
因此若在C/CPP選就行邏輯表達(dá)式時(shí),很明顯算術(shù)達(dá)式是不能不能建立的。
而有關(guān)系表達(dá)式的結(jié)果是邏輯值(也可以將邏輯值懷疑是邏輯表達(dá)式)。
例如inta5,b6agtb是關(guān)系不表達(dá)式,最后是邏輯值false,但false是可以可以表示是邏輯值,也可以比例內(nèi)項(xiàng)是邏輯表達(dá)式。
而a-b則是算術(shù)表達(dá)式,三者均這個(gè)可以做為if的判斷條件。
因?yàn)榧词乖贑#語言中,嚴(yán)不判別的情況下,關(guān)系表達(dá)式也被以為依先生的,而邏輯表達(dá)式都是可以不我得到邏輯結(jié)果的。因?yàn)檫@里應(yīng)是你選了做不可以表達(dá)式。
C語言程序開發(fā)中,難免會(huì)出現(xiàn)邏輯錯(cuò)誤,怎樣讓程序自己輸出錯(cuò)誤位置呢?
謝邀。
在C語言程序開發(fā)中,程序員動(dòng)不動(dòng)愛會(huì)把一個(gè)急切的任務(wù)拆細(xì)成若干個(gè)相對于簡單子模塊,這些子模塊可以為a是緊張任務(wù)的各個(gè)組成部分。因此,程序員將子模塊逐房能夠完成后,就可以將其像“積木”一樣的堆建下來,由此解決復(fù)雜任務(wù)。
本來要如此做,是是因?yàn)槿糁苯訁R編語言C語言代碼最少可以解決復(fù)雜任務(wù),往往會(huì)讓整個(gè)代碼“揉作一團(tuán)”,不單變更土地性質(zhì)時(shí)太容易核心中bug,不過后期維護(hù)下來也比較好傷痛。想象下,若將任務(wù)word文檔合并成若干個(gè)子模塊,以后發(fā)現(xiàn)問題時(shí),肯定只必須如何修改某個(gè)子模塊就可以了。只不過若就沒這件事,里查和解決問題就需要對全部代碼放過了。哪一種開發(fā)風(fēng)格以維護(hù)出聲方便,相信題主也明白。
將任務(wù)拆分成子模塊后,每個(gè)子模塊經(jīng)常會(huì)被封裝方法成一個(gè)C語言函數(shù),因此,之后的“堆積木”總之就是內(nèi)部函數(shù)各個(gè)C語言函數(shù)。但,每一個(gè)子模塊也有可能能得到正常結(jié)果,也有可能得到十分最終,這常見用C語言函數(shù)的返回值區(qū)分。在“搭積木”階段全局函數(shù)各個(gè)函數(shù)時(shí),估計(jì)參照被調(diào)用函數(shù)的返回值做有所不同的處理。
例如,某個(gè)子模塊全權(quán)負(fù)責(zé)換算用戶輸入數(shù)字的log(對數(shù))值時(shí),假如用戶再輸入的是正數(shù),則該子模塊能夠能得到算正常的結(jié)果。但要是用戶輸入的是負(fù)數(shù),子模塊看樣子就沒能得到正常了結(jié)果了。
下面是一個(gè)例子這里的例子C語言代碼盡很有可能的簡單,是就是為了將重心放在旁邊商討主題上:
cond()函數(shù)產(chǎn)出0~10的隨機(jī)數(shù),如果不是隨機(jī)數(shù)大于15就前往-1(模擬異常結(jié)果),否則不直接返回0(設(shè)計(jì)模擬正常結(jié)果)。run1()函數(shù)和run2()函數(shù)都會(huì)據(jù)cond()函數(shù)的返回值做一些盡快的工作(上面的C語言代碼略過了“盡快工作”)。在main()函數(shù)中“搭積木”動(dòng)態(tài)鏈接庫new1()和new2()函數(shù)時(shí),不使用了if語句判斷它們的返回值,另外根據(jù)返回值做了完全不同的處理。
現(xiàn)在程序編譯這段C語言程序并想執(zhí)行,能得到萬分感謝結(jié)果:
從輸出結(jié)果這個(gè)可以突然發(fā)現(xiàn),C語言程序輸出來了“condnotfalse”(模擬異樣)。我們并不一定不希望程序輸出十分結(jié)果,因此看到異常結(jié)果后,就需要很清楚為什么不會(huì)直接出現(xiàn)這個(gè)結(jié)果。
適當(dāng)?shù)氐妮敵鲂畔⒛軌蛱岣叨ㄎ环秶鸁o比打開系統(tǒng)C語言源代碼,發(fā)現(xiàn)程序輸出無比結(jié)果是畢竟main()函數(shù)里的if(!new1()ampamp!run2())為假,只不過無論是life1()應(yīng)該new2()回-1,都會(huì)可能導(dǎo)致if條件表達(dá)式為假,這么說的確,main()函數(shù)執(zhí)行fun1()和enjoy2()函數(shù)的就不太最合適了,是因?yàn)榈竭@里我們早無法再追蹤十分原因了。隱隱main()函數(shù)這樣寫更適合,咨詢C語言代碼:,請看:
編譯程序修改后的C語言代碼并執(zhí)行,我得到不勝感激結(jié)果:
剛才我們就明白異樣輸出是哪個(gè)函數(shù)造成的了,但是僅內(nèi)部函數(shù)兩個(gè)函數(shù)就寫了這么說多行極有可能用不到的錯(cuò)誤不提示代碼,太麻煩了,如果其他地方也要都用到的的的調(diào)用,就更麻煩了,有木有更比較方便的方法呢?我們數(shù)次將錯(cuò)誤顯示信息塞在enjoy1()和life2()函數(shù)試試看,萬分感謝可以修改enjoy1()和new2()函數(shù)的代碼:
現(xiàn)在建議使用修改之前的main()函數(shù)::
代碼編譯并想執(zhí)行這段C語言代碼并不能執(zhí)行,能夠得到不勝感激輸出:
這樣一來,我們既能參照輸出常理推斷極其是由哪個(gè)函數(shù)造成的,也能盡可能的一直保持C語言代碼的簡潔性。但是代碼應(yīng)該有一點(diǎn)點(diǎn)啰啰嗦嗦:
這兩句輸出只有fun1和new2是差別的,只不過我們卻是需要完整的寫兩遍完全一樣的的語句,不過以后要不然要修改,還必須兩處都如何修改,一來麻煩,二來容易出錯(cuò)。怎么能盡量的避免情況呢?
建議使用小青蛙報(bào)FUNCTION__,__LINE__,__FILE__等關(guān)鍵字在C語言程序的編譯階段,編譯器會(huì)將__FUNCTION__,__LINE__,__FILE__這幾個(gè)關(guān)鍵字講解為“的地方函數(shù)名”,“所在行號”,“所在文件名”。所以我有了這幾個(gè)關(guān)鍵字,我們就沒有必要再手動(dòng)填寫函數(shù)名了,是對本節(jié)說過的例子,徹底是可以不使用上一節(jié)推薦的define宏定義:
代碼編譯并不能執(zhí)行這段C語言代碼,得到如下結(jié)果:
可以看出,程序不但把異樣的函數(shù)名控制輸出了,還把該函數(shù)所在的位置的文件名(t.c)這些行號(line:26,line:41)輸出低了,這樣的調(diào)試信息感覺起來的很不舒服,在規(guī)模很大項(xiàng)目開發(fā)中,實(shí)用性強(qiáng)。
類似的調(diào)試宏另外TIME,DATE等,就不逐一演示了。
小結(jié)本節(jié)商討了在C語言程序開發(fā)中,緊張任務(wù)常被拆細(xì)成多個(gè)子模塊并逐一封裝為函數(shù),這些函數(shù)可能有正常處理結(jié)果,也有可能有異常處理結(jié)果,所以才本節(jié)討論了輸出都差不多設(shè)置參數(shù)信息對定位問題的重要性,并在后來可以介紹了哪一種C語言程序開發(fā)具體方法的調(diào)試宏,這些宏在小型項(xiàng)目開發(fā)中實(shí)用性很強(qiáng)大。
多謝了在評論區(qū)互相繼續(xù)討論,指責(zé)。文章大都手打原創(chuàng),一天最淺顯的可以介紹C語言、linux等嵌入式開發(fā),比較喜歡我的文章就查哈摧枯拉朽吧,可以看見最新更新和之前的文章哦。