| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Бъг при използване на if http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5814 |
Страница 1 от 1 |
| Автор: | tiger [ Вто Май 27, 2008 11:21 pm ] | |||||||||
| Заглавие: | Бъг при използване на if | |||||||||
Имам чувството, че имам елементарна грешка, но не мога да я видя. Затова ако може да погледнете кода. Когато променливата с стане равно на 1000 програмата зацикля на if-а, след който има коментар. Ако вместо if използвам while (като сменя само имената на двете функции и нищо друго) програмата работи
|
||||||||||
| Автор: | Nikola Kirov [ Вто Май 27, 2008 11:41 pm ] |
| Заглавие: | |
с break излизаш от цикъла и излизаш после от main |
|
| Автор: | Gogo [ Вто Май 27, 2008 11:54 pm ] | |||||||||
| Заглавие: | ||||||||||
Както е казал Никола, на тоя break не му е там местото. Пробвай така:
|
||||||||||
| Автор: | Nikola Kirov [ Сря Май 28, 2008 12:36 am ] |
| Заглавие: | |
Gogo не е прието да се ползва goto при ситуации когато е лесно да се избегне c = 0; if(a == 65) a = 75; else if(a == 75) a = 87; else if(a == 87) a = 65; |
|
| Автор: | шопов [ Сря Май 28, 2008 12:44 am ] | |||||||||||||||||||||||||||
| Заглавие: | Re: Бъг при използване на if | |||||||||||||||||||||||||||
доколкото разбирам, целта на програмата е да включва и изключва периодично някакви пинове на процесора, и от време на време да сменя периода; наистина, при тази програма, с тези break-ове се излиза от най-близкия цикъл, т.е. от ф-ята main(), едва ли това се желае; обаче, ако правилно разбирам целта на програмата, решението с while също ще работи... това, което gogo е написал, ще работи; а защо работи програмата ако се замени if с while - защото в този случай break ще излезе веднага от цикъла след обновяване на 'a', т.е. цикълът ще се изпълни само веднъж, по-ясно - става точно това, което gogo е написал по-добър вариант на кода може би е:
или
написах тези неща, защото навремето и аз често се бърках с break в езика c, и като пример, привеждам следната програма, която показва, че понякога синтаксисът на езика допуска доста своеволия:
в крайна-сметка, най-вероятно (заради подравняванията), програмата ще напечата "3" - при мен толкова печата, но на друга архитектура може да напечата и "4"; не би трябвало никога обаче да се напечата "1" |
||||||||||||||||||||||||||||
| Автор: | tiger [ Сря Май 28, 2008 9:21 am ] |
| Заглавие: | |
Сега се чувствам доста тъпо, защото съм използвал break за излизане от if Благодаря за отговорите и примерните програмки |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|