音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

用C語(yǔ)言,思考方向不同,實(shí)現(xiàn)結(jié)果就不同,看下面的例子

作者:蘭天白云 欄目:單片機(jī)
用C語(yǔ)言,思考方向不同,實(shí)現(xiàn)結(jié)果就不同,看下面的例子
用C語(yǔ)言,思考方向不同,實(shí)現(xiàn)結(jié)果就不同,看下面的例子 圖A如何用用C語(yǔ)言實(shí)現(xiàn),我不能,你試試。
再來(lái)看看圖B(圖A與圖B實(shí)現(xiàn)相同的功能)很容易用用C語(yǔ)言實(shí)現(xiàn),見程序。

2樓: >>參與討論
蘭天白云
無(wú)法上傳圖B,見“用C語(yǔ)言實(shí)現(xiàn)圖B功能”
 
3樓: >>參與討論
蘭天白云
版主,為什么只能上傳300K以下的圖片?
版主,為什么只能上傳300K以下的圖片?我本想把圖A與圖B放一起好做比較。

4樓: >>參與討論
xieyuanbin
你的積分可能不夠。
每個(gè)貼只能放一個(gè)圖片。你要發(fā)兩個(gè),就要在回貼里面貼。

5樓: >>參與討論
蘭天白云
1000分以上不夠嗎?
回貼里找不到貼圖的地方,另版主如何用C寫圖A的程序?,有時(shí)間寫個(gè)看。

6樓: >>參與討論
hotpower
C語(yǔ)言實(shí)現(xiàn)的方法很多
goto語(yǔ)句,while循環(huán),或void函數(shù)等.

后2中的break或return都能替代討厭的goto語(yǔ)句

例(while循環(huán)):

while(1) {//假死循環(huán),因?yàn)樽詈蠖糱reak強(qiáng)行退出
  if (t1 != 0x0a) {
    if (t1 != 0x00) break;//實(shí)現(xiàn)第1個(gè)goto prgend
    t1 = 0x0b;//繼續(xù)
  }
  if (dip == 1) break;//實(shí)現(xiàn)第2個(gè)goto prgend
  if (t2 != 0) break;//實(shí)現(xiàn)第3個(gè)goto prgend
  t2 = 0x0b;
  break;//強(qiáng)行跳入goto prgend
}
//prgend

void函數(shù)方法雷同:
//假定t1,t2,dip是全局變量
在主程序中運(yùn)行f();

void f(void) {
  if (t1 != 0x0a) {
    if (t1 != 0x00) return;//實(shí)現(xiàn)第1個(gè)goto prgend
    t1 = 0x0b;//繼續(xù)
  }
  if (dip == 1) return;//實(shí)現(xiàn)第2個(gè)goto prgend
  if (t2 != 0) return;//實(shí)現(xiàn)第3個(gè)goto prgend
  t2 = 0x0b;
}

goto是最基本也是最討厭的...

實(shí)際還有SWITCH等具有break功能的語(yǔ)句都能替代goto

7樓: >>參與討論
張明峰
C語(yǔ)言中應(yīng)該用不著goto的
雖然goto在C語(yǔ)言中合法,但不應(yīng)該用。誰(shuí)用誰(shuí)的C語(yǔ)言就基本不及格--個(gè)人觀點(diǎn)。

8樓: >>參與討論
hotpower
哈哈,不及格倒不是
goto有時(shí)為優(yōu)化程序也是不得已的,特別是為幾個(gè)字節(jié)傷心時(shí)特別開心...

那時(shí)就忘記不及格的問(wèn)題了...

9樓: >>參與討論
computer00
既然有這條語(yǔ)句,為何不用?沒必要跟自己過(guò)不去。
 
10樓: >>參與討論
hotpower
因?yàn)镃人被A人的jmp搞暈了才拋棄goto
 
11樓: >>參與討論
computer00
呵呵……我覺得跳來(lái)跳去思路也蠻清晰的嘛,
總比搞個(gè)其它的語(yǔ)句,一邊判斷,一邊還要想著跳哪 來(lái)得快。

我先判斷好了,直接跳那就是那了,錯(cuò)不了。

12樓: >>參與討論
hotpower
所以A人比較勤儉C人比較酷
大程序三級(jí)跳太累...還是做C人瀟灑...

A人太累...頭發(fā)肯定比C人白的早...

* - 本貼最后修改時(shí)間:2005-5-25 0:40:09 修改者:hotpower

13樓: >>參與討論
蘭天白云
大家談了這么多,也該把流程圖寫成C了。
幫幫忙,寫一寫,我很差,真的寫不出。

14樓: >>參與討論
蘭天白云
多謝hotpower
我只知break用在循環(huán)里面。卻不知還有這種變通用法。

15樓: >>參與討論
dengm
第一個(gè)分支用if塊, 其他goto到“單點(diǎn)”(圖A)
 
16樓: >>參與討論
hotpower
這種變通用法是為了"C及格"
dengm同志: C人死了都不愿讓人說(shuō)用了goto,可A人不用goto(jmp)就不是真正的A人!!!

這可能就是C和A最大的區(qū)別--(A人整日琢磨如何用活jmp)

17樓: >>參與討論
xieyuanbin
我對(duì)C不熟,整了一個(gè),歡迎指正。
while(1)
{
    if (t1==0x0a);
    {
        test_dip();
        break;
    }
    if (t1==0);
    {
        t1=0x0b;
        test_dip();
    }
    break;
}

void test_dip (void)
{
        if (dip!=1 && t2==0);
        {t2=0x0b};
}


我想?yún)R編以后BREAK語(yǔ)句就是一個(gè)GOTO,個(gè)PICC在低檔MCU中堆棧不夠的情況下是用GOTO代替CALL的。

18樓: >>參與討論
hotpower
if (xxx)后的分號(hào)不敢要
哈哈...while(1)+break=goto終于"銷路不錯(cuò)"...

19樓: >>參與討論
hotpower
只用if即可搞定不用goto的例子
if (!((t1 != 0x0a) && (t1 != 0x00))) {//避開第1個(gè)goto
  if (t1 == 0x00) {
    t1 = 0x0b;
  }
  if (dip != 1) {//避開第2個(gè)goto
    if (t2 != 0) {//避開第3個(gè)goto
      t2 = 0x0b;
    }
  }  


20樓: >>參與討論
computer00
呵呵……看了頭暈,結(jié)果編譯器一編譯,展開來(lái),還是那樣子……
 
21樓: >>參與討論
hotpower
展開肯定都是goto
哈哈..."根"就是goto...

22樓: >>參與討論
computer00
以前初學(xué)BASIC時(shí),就用過(guò)很多的GOTO,一行行標(biāo)號(hào)那種
后來(lái)學(xué)C語(yǔ)言了,書上說(shuō),GOTO語(yǔ)句不是結(jié)構(gòu)化編程的語(yǔ)句,最好不要用。
不用就不用吧。好象我平時(shí)寫的那些C程序都沒用過(guò)GOTO語(yǔ)句,可能沒遇到
真正頭疼的問(wèn)題。因?yàn)槠綍r(shí)寫的程序也不大,最多的也才3千行左右,
結(jié)果還要除掉開頭的幾行注釋,還有大括號(hào)的換行,就沒剩幾行了^_^。

23樓: >>參與討論
蘭天白云
圖B沒發(fā)上
 

* - 本貼最后修改時(shí)間:2005-5-26 20:13:36 修改者:XIEYUANBIN

[img]http://www.chinaasp.net/img/logo.gif[/img]

24樓: >>參與討論
xieyuanbin
鏈接無(wú)效?
 
25樓: >>參與討論
蘭天白云
xieyuanbin的程序簡(jiǎn)潔,但不直觀,hotpower的好象有問(wèn)題
只用if即可搞定不用goto的例子

if (!((t1 != 0x0a) && (t1 != 0x00))) {//避開第1個(gè)goto
  if (t1 == 0x00) {
    t1 = 0x0b;
  }
  if (dip != 1) {//避開第2個(gè)goto
    if (t2 != 0) {//避開第3個(gè)goto
      t2 = 0x0b;
    }
  }  
}
我想應(yīng)該是
if ((t1 == 0x0a) && (t1 == 0x00)) {//避開第1個(gè)goto
  if (t1 == 0x00) {
    t1 = 0x0b;
  }
  if (dip != 1) {//避開第2個(gè)goto
    if (t2 == 0) {//避開第3個(gè)goto
      t2 = 0x0b;
    }
  }  
}




26樓: >>參與討論
蘭天白云
仔細(xì)想想,hotpower是對(duì)的,有一行要改,可能是筆誤吧。
仔細(xì)想想,hotpower是對(duì)的,有一行要改,可能是筆誤吧!我的是錯(cuò)的



只用if即可搞定不用goto的例子

if (!((t1 != 0x0a) && (t1 != 0x00))) {//避開第1個(gè)goto
  if (t1 == 0x00) {
    t1 = 0x0b;
  }
  if (dip != 1) {//避開第2個(gè)goto
    if (t2 == 0) {//避開第3個(gè)goto //----改改改----
      t2 = 0x0b;
    }
  }  
}
我自己的也改一下
if ((t1 == 0x0a) || (t1 == 0x00)) {//避開第1個(gè)goto
  if (t1 == 0x00) {
    t1 = 0x0b;
  }
  if (dip != 1) {//避開第2個(gè)goto
    if (t2 == 0) {//避開第3個(gè)goto
      t2 = 0x0b;
    }
  }  
}



27樓: >>參與討論
蘭天白云
TO:  xieyuanbin 鏈接無(wú)效
點(diǎn)擊 有什么用?


28樓: >>參與討論
hotpower
(t2 != 0)是筆誤
主要是粘貼了if (t2 != 0) break;//實(shí)現(xiàn)第3個(gè)goto prgend


至于if (!((t1 != 0x0a) && (t1 != 0x00))) {//避開第1個(gè)goto
和  if ((t1 == 0x0a) || (t1 == 0x00)) {//避開第1個(gè)goto

實(shí)際是一樣的,這實(shí)際就是"摩根定律"...

不過(guò)蘭天白云寫的簡(jiǎn)單些...我也想過(guò)if ((t1 == 0x0a) || (t1 == 0x00)) {//避開第1個(gè)goto

但當(dāng)時(shí)又覺得不對(duì)...



我是用"直接法"編程的,因?yàn)榈?個(gè)goto處可以用
if ((t1 != 0x0a) && (t1 != 0x00)) {//進(jìn)入第1個(gè)goto

那么,自然就得到避開第1個(gè)goto的邏輯肯定是上式的"非",即

if (!((t1 != 0x0a) && (t1 != 0x00))) {//避開第1個(gè)goto



哈哈,雖然別人感覺主題太弱智...但我還是對(duì)其感興趣...

因?yàn)樗俏覀兙幊痰?quot;根基"所在...

29樓: >>參與討論
cf100
goto 會(huì)濫用的確不好,但也不是絕對(duì)不能用,看場(chǎng)合而定
比如某些深層的循環(huán)中,用別的方法跳出反而會(huì)造成思路不清或速度時(shí)效上的低劣。如果在用GOTO最方便的場(chǎng)合究竟用還是不用GOTO,看個(gè)人愛好。


30樓: >>參與討論
BitFu
這樣可以嗎?
if(((t1==0x0a)||(t1==0x99))&&(dip!=1)&&(t2==0))
    t2=0x0b;
if(t1==0x99)
    t1=0x0b;


* - 本貼最后修改時(shí)間:2005-5-27 19:46:11 修改者:BitFu

31樓: >>參與討論
BitFu
關(guān)于goto
     很多書考慮可讀性的原因,建議不要使用goto,我也一直那樣認(rèn)為,正如上面所提到的用了就是不及格的人,然而當(dāng)microsoft開始不及格的時(shí)候我才明白,局部的goto語(yǔ)句對(duì)C程序的結(jié)構(gòu)優(yōu)化是那么的重要。
microsoft用goto的一般格式如下:

int fun(...)
{
   ....
   if(...)
      goto ERROR;
   ...
   if(...)
     goto ERROR;
   ...
   return 0;
ERROR:
   //錯(cuò)誤處理
   return ERROR_CODE;
}

我也慢慢意識(shí)到,goto可以避免很多的函數(shù)嵌套或語(yǔ)句的嵌套,這無(wú)疑是單片機(jī)資源的節(jié)省。并且在函數(shù)內(nèi)部的跳轉(zhuǎn)不會(huì)對(duì)可讀性產(chǎn)生太大的影響,甚至可以加強(qiáng)代碼的可讀性。當(dāng)然除了這樣的場(chǎng)合外我從不使用goto。

個(gè)人觀點(diǎn),無(wú)意爭(zhēng)論。

* - 本貼最后修改時(shí)間:2005-5-28 9:28:04 修改者:BitFu

32樓: >>參與討論
圓圈
暈死人
整個(gè)流程圖,除了兩條是執(zhí)行語(yǔ)句外,其他都是判斷,那還不簡(jiǎn)單
void fun( void )
{
  if ( t1 == 0x00 )
    t1 = 0x0b;
  if ( (( t1 == 0x00 ) || ( t1 == 0x0a )) && ( dip != 1 ) && ( t2 == 0x00 )
    t2 = 0x0b;
  return;
}
樓豬的流程圖本來(lái)就有問(wèn)題,設(shè)計(jì)人員不應(yīng)該被誤導(dǎo),應(yīng)透過(guò)現(xiàn)象看本質(zhì),這才是化繁為簡(jiǎn)的程序設(shè)計(jì)思路之根本...

33樓: >>參與討論
hotpower
圓圈的簡(jiǎn)化很好但還是錯(cuò)了
圓圈的思路是如何滿足2個(gè)條件而非三個(gè)goto分支.
但在滿足第1個(gè)條件后,在進(jìn)入第2個(gè)條件前,t1只能有2個(gè)值:1是0x0a和0變化后的0x0b.
故應(yīng)該改為(( t1 == 0x0b ) || ( t1 == 0x0a ))而非(( t1 == 0x00 ) || ( t1 == 0x0a ))才是.

即:
void fun( void )
{
  if ( t1 == 0x00 )
    t1 = 0x0b;
  if ( (( t1 == 0x0b ) || ( t1 == 0x0a )) && ( dip != 1 ) && ( t2 == 0x00 ))
    t2 = 0x0b;
  return;
}


* - 本貼最后修改時(shí)間:2005-5-28 0:12:15 修改者:hotpower

34樓: >>參與討論
圓圈
暈死,粗心啦。。
 
35樓: >>參與討論
BitFu
hotpower的也錯(cuò)了
假如t1一開始就0x0b怎么辦?
不過(guò)思路對(duì)了就可以了。

36樓: >>參與討論
hotpower
哈哈, 分析了中間又忘了從前
看來(lái)做變性手術(shù)后就不知他(她)的本性了...

哈哈...近來(lái)老犯很弱智的問(wèn)題.說(shuō)出來(lái)真難為情...

37樓: >>參與討論
dengm
就一個(gè)小小題目就出這么多BUGs, 還討厭“goto”嗎?
 
38樓: >>參與討論
hotpower
用goto確實(shí)不甘心...
但看老外的程序幾乎好程序都有g(shù)oto的身影...

不過(guò)既然不想用goto實(shí)現(xiàn)樓主的題目,BUGs也是難免的...

可以肯定goto是能排除的,不過(guò)要頭痛些.

39樓: >>參與討論
yuocean
我認(rèn)為GOTO非常的好用!
我認(rèn)為GOTO非常的好用。

40樓: >>參與討論
lingjunwei
ok
好用,哈哈

41樓: >>參與討論
cf100
不推薦使用GOTO,但不禁止使用GOTO
    在結(jié)構(gòu)化程序設(shè)計(jì)中一般不提倡使用goto語(yǔ)句, 以免造成程序在流程的混亂,使可理解性降低和調(diào)試程序難度增加。
    其實(shí),我們?cè)谑褂肅語(yǔ)言及以上等級(jí)的語(yǔ)言編寫程序時(shí),有時(shí)可以使用goto語(yǔ)句優(yōu)化程序,提高程序的運(yùn)行效率,減少代碼的冗余,因?yàn)間oto的高效率是其它方法不能比擬的。
    濫用goto是會(huì)破壞程序的可讀性,但合理地使用goto語(yǔ)句,除了能提高程序的效率外,還是有可能增加程序的可讀性的。
    用結(jié)構(gòu)化設(shè)計(jì)的程序具有良好的可讀性,但以犧牲一定的效率和資源為前提,但在如PICC編程中,效率和資源占用率有時(shí)比可讀性要重要得多。而且風(fēng)格好的程序也不見得都是用了結(jié)構(gòu)化的方法。

42樓: >>參與討論
蘭天白云
變換一下流程圖就簡(jiǎn)單了
 

* - 本貼最后修改時(shí)間:2005-5-29 16:29:42 修改者:XIEYUANBIN

../uploadfile/200705151129276814.jpg

43樓: >>參與討論
蘭天白云
然后再寫一次程序,是不是簡(jiǎn)單很多?
void fun1(unsigned CHAR t1,unsigned CHAR t2,unsigned CHAR dip)
{  if(t1=0x0a||t1=0x00)        
     { if(t1==0x00)
         {t1=0x0b;}
       if(dip!=0x01)
         {if(t2==0x00)
            {t2=0x0b;}
         }
     }
}     


44樓: >>參與討論
hotpower
還是教授說(shuō)得有道理
村里人就是說(shuō)不好...

45樓: >>參與討論
hotpower
圖B要比圖A簡(jiǎn)單的多
if ((t1 == 0x0a) || (t1 == 0x00)) {
  if (t1 == 0x00) t1=0x0b;
  if ((dip != 0x01) && (t2 == 0x00)) t2=0x0b;
}


注意: if(t1=0x0a||t1=0x00) 寫法錯(cuò)誤!!!

46樓: >>參與討論
蘭天白云
hotpower指點(diǎn)的正是
這么老是犯這種小錯(cuò)誤,說(shuō)出不好意思!

47樓: >>參與討論
FZJ
厲害的hotpower
像hotpower多多學(xué)習(xí)!佩服!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)問(wèn)如何在匯編中操作用C定義的位。編譯器為PICC8.05
誰(shuí)有PWM控制電機(jī)的資料,能否共享一下!
[原創(chuàng)]RS232-RS485轉(zhuǎn)換器電路
ICD2單步調(diào)試運(yùn)行為何慢?
用AD做按鍵輸入,有時(shí)會(huì)誤觸發(fā)下一按鍵,請(qǐng)教如何解決
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)