![]() |
1.去掉只有一句的if的括號 2.去掉沒有用的if,比如12行、17行兩對 3.把aa和bb寫成a[0]和a[1],其他對應也寫成數組,用個for 4.4個位也可以用數組+for |
循環用取模表達式,代碼字母不可能不會少,但行數變少了 temp = (temp + 1) % 10000; 變量aa和bb如果是循環變化,同樣也可以用取模 |
shenqiwei 發表于 2024-10-6 04:57 不懂同時怎樣判斷。把BCD那部分弄個函數,就很簡潔了。
|
千百十個的運算做成一個函數,程序看上去會簡潔點 |
188610329 發表于 2024-10-5 23:28 我要C語句,簡潔程度。 ![]() |
xiaobendan001 發表于 2024-10-5 07:52 我的意思是IF能不能同時判斷AA,BB。這樣代碼量就會很少 ![]() |
你要優化什么? 優化 C 語句看上去的簡潔程度? 還是代碼執行效率? 變量的占用量? 還是排版上毫無意義的一大堆括號? |
黃youhui 發表于 2024-10-5 08:08 手快寫漏了 ![]() |
405616736 發表于 2024-10-5 03:46 而且你這個sprintf輸出的字符,不是BCD碼吧。這樣要是顯示到比如數碼管上面還得再處理一下吧。 |
405616736 發表于 2024-10-5 03:46 將if判斷語句那里換成==就是正解。 |
405616736 發表于 2024-10-5 03:46 你這看起來簡化了,編譯出來可不一定吧 |
本帖最后由 405616736 于 2024-10-5 23:30 編輯 int str[4] if(aa==20) { aa=0; if(++temp==9999) temp=0; sprintf(str,"%04d",temp); } |
xiaobendan001 發表于 2024-10-4 14:26 最好還是用語法搞定 ![]() |
BCD碼放數組里面,然后弄個函數,把數組地址和數據傳進去,里面用一個循環搞定,這樣應該簡化不少吧。 大概類似這種代碼編譯器好像也可以幫你簡化。就是實際上出來的HEX并不大。 |