Аlex писал(а):почему нельзя написать через == ?
выражение (PIND,5 == 0) не приведет к тому же результату?
А почему можно ? С чего Вы взяли что должно привести к такому-же результату? Кто Вам такое сказал ?
да никто... я пишу выражение "пятая нога порта Д равна нулю"
если оно истинно, почему условие не сработает?
Аlex писал(а):Потому, что нельзя.

вот поэтому я и не знаю Си... все говорят, делай так, не делай вот так... никто ничего не объясняет...
вот кусок кода:
Код: Выделить всё
k = 5;
if(PIND & (1<<k))
{
PORTD |= 1<<k; //set bit
}
отладчик виснет на строчке с условием...
если пишу через == - так же прекрасно виснет

собственно задача: как зажигать и гасить бит, номер которого задается переменной, мне любезно объяснили
теперь надо понять как проверять состояние бита, номер которого задан переменной
собственно, об это и бьюсь

а вообще, имеет право на жизнь конструкция PIND,5 ? компилятор на нее молчит в тряпочку и не ругается.
и какой у нее получается тип - булевый?
тогда, можно ли написать просто if (PIND,5) ?
UPD.: попробовал - вроде заработало
зачем тогда логическое &, значит, можно все-таки просто засунуть в if нужный пин?
или все-таки это против каких-то правил, которых я не знаю?