[問題] if簡化的問題

看板C_and_CPP作者 (有緣人)時間13年前 (2011/03/25 19:36), 編輯推噓2(2028)
留言30則, 6人參與, 最新討論串1/2 (看更多)
code如網址: http://codepad.org/mqAb2UuB 這是控制led燈的程式..如何把if簡化. 因為感覺程式有點攏長..switcha是開關 煩請大大解說... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.162.37

03/25 19:52, , 1F
「冗」長, ㄖㄨㄥˇ
03/25 19:52, 1F

03/25 19:52, , 2F
switcha = 0 且 cnta = 12,則 led = 0 且 led = 1
03/25 19:52, 2F

03/25 19:54, , 3F
我會用位元運算來做...
03/25 19:54, 3F

03/25 20:05, , 4F
while(1) {
03/25 20:05, 4F

03/25 20:06, , 5F
if(!switcha && !((cnta++) %6))led = 1-led, cnta=0;
03/25 20:06, 5F

03/25 20:08, , 6F
if(!switchb && !(cntb++ & 0x01))led=1-led,cntb=0; }
03/25 20:08, 6F

03/25 20:13, , 7F
上述邏輯錯誤. sorry = =
03/25 20:13, 7F

03/25 20:14, , 8F
不會~
03/25 20:14, 8F

03/25 20:18, , 9F
請問有詳解嗎?
03/25 20:18, 9F

03/25 20:23, , 10F
http://codepad.org/RG7IqIw5 試試,這寫法可能會被劈
03/25 20:23, 10F

03/25 20:23, , 11F
另, 何謂詳解?
03/25 20:23, 11F

03/25 20:23, , 12F
能不能簡化其實決定於你要解決的問題, 而不是程式碼
03/25 20:23, 12F

03/25 20:24, , 13F
降效率會比較好嗎?
03/25 20:24, 13F

03/25 20:26, , 14F
這種程式再怎麼改效率也不會差太多...
03/25 20:26, 14F

03/25 20:27, , 15F
比如: 你判斷餘數的用意是什麼? 為什麼不是if-else if
03/25 20:27, 15F

03/25 20:28, , 16F
了解...我那總寫法是可以解決問題= ="只是想說好多if
03/25 20:28, 16F

03/25 20:30, , 17F
從開關b那段, 我覺得你沒有充分理解這個問題, 而這時
03/25 20:30, 17F

03/25 20:30, , 18F
就開始思考能不能簡化還言之過早
03/25 20:30, 18F

03/25 20:31, , 19F
打錯, 是開關a
03/25 20:31, 19F

03/25 20:43, , 20F
while(1)迴圈是寫在timer副函式..sorry我沒表達很清楚
03/25 20:43, 20F

03/25 20:53, , 21F
為什麼你這程式沒有改switchb的值,是要做什麼?
03/25 20:53, 21F

03/25 20:54, , 22F
實際上那是一個開關可以做切換
03/25 20:54, 22F

03/25 20:57, , 23F
switcha, switchb 是否只有一個可成立?
03/25 20:57, 23F

03/25 20:59, , 24F
對...只有一個能成立.
03/25 20:59, 24F

03/25 21:04, , 25F
那只能說..你原本程式碼的邏輯也是錯的.
03/25 21:04, 25F

03/25 21:08, , 26F
我覺得是switcha控制一個像時脈的東西,switchb控制另一個.
03/25 21:08, 26F

03/25 21:09, , 27F
哪個開關打開,時脈就會動,會按自己頻率切換. 而兩段時脈會
03/25 21:09, 27F

03/25 21:09, , 28F
對壓...y大說對了
03/25 21:09, 28F

03/25 21:09, , 29F
融合在一起. switcha和switchb可以彼此無關.
03/25 21:09, 29F

03/25 21:12, , 30F
原來是我誤會了,謝謝解釋.
03/25 21:12, 30F
文章代碼(AID): #1DZ7uieU (C_and_CPP)
文章代碼(AID): #1DZ7uieU (C_and_CPP)