> AAS
Помню по этому поводу, что нужно доказать что True = 1, False = 0,
поскольку это еще менее очевидно начинающему.
Начинаюшему ни чего не читающему вообще ни чего очевидным не станет,
поэтому что-то почитать придется если есть желание в чем то разобраться.
Есть много источников, я предлагаю свой краткий курс.
В нем написано, при первой же потребности понять что это - в задаче 01:
наша программа будет сидеть в цикле while() пока условие в скобках
истино - т.е. "не ноль" (не равно нулю) - на языке Си: !(0)
"!" - означает "не"
while(1) - очень частое применение этого цикла -
означает "Делать пока есть питание и нет прерывания" -
так как в скобках "не ноль" постоянно.
ВАЖНО: можно было написать любое число 5, 25, или 3...
Запомните! в Си:
"не ноль" это "истина"
"ложно" только "ноль" !!!
Т.е. я расчитывал именно на новичка, и что прочитав
он это поймет.
Вот еще источник по Си не относительно МК:
"Руководство полного идиота - язык Си" - Богатырев
Если условие есть НОЛЬ - то условие считается ложным.
Если условие есть НЕ НОЛЬ а ... -2, -1, 1, 2, 3, ... - то условие истинно.
> termostat
наверно можно так: while(Code){}
> AAS
Не очень хорошая мысль я думаю.
Хотя бы уж так, что бы начинающие понимали:
while((bool)Code) {}
Да я за! чтоб начинающие понимали, но вот твой код компилятор
не поймет, вот в чем беда.
Ты прежде чем выкладывать код проверь его на
компиляторе, че в пустую то топик забивать.
А что понятней:
while(Code){} или while((bool)Code) {}
Это пусть каждый решает для себя сам, только бы
компилятор понял что от него хотят.
> AAS
Сколько смайлов я должен поставить рядом что бы фраза
которую ты атакуешь казалась тебе безобидным юмором?
Но раз нашла коса на камень то:
APPNOTE AVR331 Ну вот например:
code text
while(1)
{
key=getchar();
putchar(key);
delay(100);
}
А нужно бы как рекомендует Денис Ричи
code text
while(TRUE)
Да сколько смайлов не поставь, я все равно буду призывать не
вводить людей в заблуждение и не советовать того что не
будет работать
code text
while(TRUE)
Рбатать НЕ БУДЕТ!
пока вы в программе не определите
#define TRUE !0
или
#define TRUE 1
или
#define TRUE (что нибудь не равное нулю)
ПОВТОРЯЮ если вы делаете программу на Си для МК то делайте так
как написан Си код в АпликешнНоутах и ДАтаШитах на МК, в инструкции
к Компилятору которым вы пользуетесь!
> AAS
Или вот:
if(--buff_cnt == 0) // If buffer is empty:
Если уж быть последовательным, то нужно бы так:
buff_cnt--;
if(buff_cnt == 0) ....
Да второй вариант более читабельный.
Даже смайликов не нужно ставить.
Но первый вариант (--buff_cnt == 0) аброй-кадаброй не
назовешь - действия написаны по порядку: декрементировать,
затем сравнить.
В курсе я давл совет, чтоб не гадать и не ошибится с
приоритетом операций поставьте скобок () побольше.
if ((--buff_cnt) == 0) это эквивалентно if (!(--buff_cnt))
> AAS
Да и был бы он там Си в апп.ноутах, там все больше
блоксхемы, да мнемоника.
Кто ищет тот найдет.
> AAS
Синтаксис и лексика языка была продумана настолько давно,
что язык стал чем то безотносительным к платформе, буть то
ПК,КПК или МК.
"безотносительным к платформе" или машинонезависимым - это
то свойство которое в Си и ценно.
> AAS
И уж учится применению надо не в Ап.ноутах а
в литературе на порядок старше.
Не надо старше, имено в АпНоутах все дано
приминительно ИМЕННО к МК ! а не вообще...
> AAS
Могу прицепить "Веревка
достаточной длины,чтобы... выстрелить себе в ногу" - это
около 159 параграфов правил как писать на Си и С++ - 148Кб.
Очень правильно будет почитать Страуструппа, но там все
больше про С++.
Я уж много раз повторяю, сразу выкладывай. чего спрашивать то?
Может человека, кому она понадобится, щас не на форуме.
А ему понадобится тебя не будет.