欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求教:C語言這樣編程可以嗎? [打印本頁]

作者: 夜遇    時間: 2019-9-12 21:19
標題: 求教:C語言這樣編程可以嗎?
單片機開機顯示函數最后一句是while(1);想要繼續執行按鍵程序,可以這樣編寫嗎?
while(1){
                       if(k1==0)//kn是獨立按鍵
                       goto loop1
                       else if(k2==0)
                       goto loop2
                               ……
                        


作者: xuyaqi    時間: 2019-9-13 09:17
goto loop1改成函數直接調用不行嗎?xxxx();
作者: f556    時間: 2019-9-13 09:57
goto似乎用起來很方便,但實際上不好用,所以goto是不建議C中使用的。從你的不確定,也說明自己不好把控goto。
C可以自信地說,不需要goto,不管按鍵,其它任何復雜的功能都能實現。
作者: dzbj    時間: 2019-9-13 11:12
f556 發表于 2019-9-13 09:57
goto似乎用起來很方便,但實際上不好用,所以goto是不建議C中使用的。從你的不確定,也說明自己不好把控got ...

搭車問下 看好多地方都說盡量不用goto 它哪不好啊
作者: angmall    時間: 2019-9-13 23:05
因為老手經過寫很多代碼發現,同一個程序隨著goto語句的使用次數增多,它的邏輯就會成指數上升,人腦是看不懂它的邏輯,哪怕前一秒是自己寫的,后一秒就不知它跑哪去了。當然你在一個程序用一個兩個還是可以的(別聽書上瞎說,其實我認為你偶爾做書上不建議的事也許會有意想不到的收獲),挺方便的(但注意,要自己控制goto數量,多了你會后悔的)。


作者: 夜遇    時間: 2019-9-14 07:02
f556 發表于 2019-9-13 09:57
goto似乎用起來很方便,但實際上不好用,所以goto是不建議C中使用的。從你的不確定,也說明自己不好把控got ...

是,程序按現在的想法編寫至少有11個goto語句,所以有點怕出錯。其實我主要問的是while(1);這個死循環這么改行不行?
作者: angmall    時間: 2019-9-14 08:39
GOTO語句使程序的靜態結構和動態結構不一致,從而使程序難以理解,難以查錯。

有人認為GOTO語句使用起來比較靈活,而且有些情形能提高程序的效率。
1974年,D·E·克努斯對于GOTO語句爭論作了全面公正的評述,其基本觀點是:不加限制地使用GOTO語句,特別是使用往回跳的GOTO語句,會使程序結構難于理解,在這種情形,應盡量避免使用GOTO語句。但在另外一些情況下,為了提高程序的效率,同時又不至于破壞程序的良好結構,有控制地使用一些GOTO語句也是必要的。用他的話來說就是:“在有些情形,我主張刪掉GOTO語句;在另外一些情形,則主張引進GOTO語句。”
后來,G·加科皮尼和C·波姆從理論上證明了:任何程序都可以用順序、分支和重復結構表示出來。這個結論表明,從高級程序語言中去掉GOTO語句并不影響高級程序語言的編程能力,而且編寫的程序的結構更加清晰。
goto語句的結果:在C/C++等高級編程語言中保留了goto語句,但被建議不用或少用。在一些更新的高級編程語言,如Java不提供goto語句,它雖然指定goto作為關鍵字,但不支持它的使 用,使程序簡潔易讀;盡管如此后來的c#還是支持goto語句的,goto語句一個好處就是可以保證程序存在唯一的出口,避免了過于龐大的if嵌套。
可以考慮使用goto的情形:
1.從多重循環中直接跳出 ;
2. 出錯時清除資源; 
3.可增加程序的清晰度的情況。

不加限制地使用goto:破壞了清晰的程序結構,使程序的可讀性變差,甚至成為不可維護的"面條代碼"。經常帶來錯誤或隱患,比如它可能跳過了某些對象的構造、變量的初始化、重要的計算等語句。
goto語句問題的提出直接推動了結構化程序設計(structured programming)的思想和程序設計方法學的誕生和發展。結構化程序設計方法引入了工程思想和結構化思想,使大型軟件的開發和編程都得到了極大的改善。結構化程序設計方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語句。

下列關于使用goto語句的原則可以供讀者參考。   
1) 使用goto語句只能goto到同一函數內,而不能從一個函數里goto到另外一個函數里。   
2)使用goto語句在同一函數內進行goto時,goto的起點應是函數內一段小功能的結束處,goto的目的label處應是函數內另外一段小功能的開始處。   
3)不能從一段復雜的執行狀態中的位置goto到另外一個位置,比如,從多重嵌套的循環判斷中跳出去就是不允許的。   
4)應該避免像兩個方向跳轉。這樣最容易導致"面條代碼"。


作者: angmall    時間: 2019-9-14 13:07
夜遇 發表于 2019-9-14 07:02
是,程序按現在的想法編寫至少有11個goto語句,所以有點怕出錯。其實我主要問的是while(1);這個死循環 ...

簡單的回答是不行,使用goto語句只能goto到同一函數內,而不能從一個函數里goto到另外一個函數里。
作者: hantu    時間: 2019-9-14 23:23
盡量不用goto,你想要的功能也照樣能寫出來。
作者: yzwzfyz    時間: 2019-9-15 10:26
事物有其兩面性,如果GOTO一無是處就沒有存在的價值了。

作者: M_my    時間: 2019-9-15 11:18
不建議用goto語句,可以改為函數調用,這樣是代碼更加高效化
作者: 黃youhui    時間: 2019-9-15 17:49
dzbj 發表于 2019-9-13 11:12
搭車問下 看好多地方都說盡量不用goto 它哪不好啊

容易發生一些變量未定義的錯誤或者重復定義胡錯誤,如下a未定義
goto  a1;
int a=1;
a1:
a++;

作者: seu-yan    時間: 2019-9-15 19:51
goto在運行過程當中可能不是很穩定,建議不要用goto吧
作者: 36218    時間: 2019-9-15 20:12
使用起來是沒什么問題,但可以把goto換成要執行的函數啊,goto使用多了程序的執行不好把控
作者: zzl110    時間: 2019-9-15 20:33
盡量別用GOTO這個
作者: HUST_Vegetable    時間: 2019-9-15 21:02
強烈建議不要用goto,C語言goto其實差點被刪掉了...除非C用了很長時間了,否則不要這個語句...你這個肯定可以用函數調用的方式寫,比這個更易懂
作者: miyanan1571    時間: 2019-9-16 09:28
我覺得可以這樣寫,但是要加一個else return ;這樣可以避免因為沒有考慮全某種情況而造成死循環




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1