Здравствуйте, emergenter, Вы писали:
E>Подскажите пожалуйста что обозначает данная запись (какое тут условие)??
E>unsigned int i;
E>if(i&&0x1)
E>{
E>}
Что-то пролистал тему, столько ответов и предложений. Что захотель тоже посильную лепту внести
Мне кажется так более понятнее:
if( х&&0x1 ) ==
if ( х | 1 )
if( х||0x1 ) ==
if ( х & 1 )
Я знаю что сейчас сорву гром "аплодисментов"

Не судите строго
Но в данном случае х — это абстракция, то бишь состояние, либо нуль, либо единица.
Повторяю — это не бинарная операцЫя, а логическая
Здравствуйте, <Аноним>, Вы писали:
А>Что-то пролистал тему, столько ответов и предложений. Что захотель тоже посильную лепту внести
А>Мне кажется так более понятнее:
А>if( х&&0x1 ) == if ( х | 1 )
А>if( х||0x1 ) == if ( х & 1 )
Что-то ты не то написал.
(x|1) — вычисление x и установка младшего бита, поэтому выражение всегда истинно.
(x&1) — вычисление x и проверка младшего бита.
(x||1) — вычисление x, затем истина. Мало чем отличается от выражения ((bool)x , true).
(x&&1) — вычисление x. Не отличается от выражения (bool)x.
x|1 эквивалентно x||1.
x&1 не эквивалентно x&&1.
А>Я знаю что сейчас сорву гром "аплодисментов"
Не судите строго
...Но справедливо.
А>Но в данном случае х — это абстракция, то бишь состояние, либо нуль, либо единица.
Эта абстракция зовётся булевым выражением. У него есть совершенно определённый тип — bool.
Если ты имеешь в виду преобразование интегральных выражений к bool, то так и скажи.
А>Повторяю — это не бинарная операцЫя, а логическая
Вот специально за этим в С/С++ разнесли булевые и битовые операции.
... << RSDN@Home 1.1.2 stable >>
удивительно как на такие простые вопросы находится столько вариантов ответа..) странно что среди них есть правильные.)
предлагаю еще одну тему посложнее.)
что будет после
int i=0;
++i++;
cout<<" i = "<<i;
а если не будет то в чем проблема.)))
Здравствуйте, Аноним, Вы писали:
А>что будет после
А> int i=0;
А> ++i++;
А> cout<<" i = "<<i;
А>а если не будет то в чем проблема.)))
Будет ошибка компиляции

в выражении ++i++ скобки расставляются так: ++(i++), а поскольку i++ это rvalue, то упс.
А если написать (++i)++, то это UB, хотя и с достаточно
ожидаемым результатом: i+=2.