Здравствуйте, emergenter, Вы писали:
E>Подскажите пожалуйста что обозначает данная запись (какое тут условие)?? E>unsigned int i; E>if(i&&0x1) E>{
// если i нечетное или 0 бит i равен '1' — что-то в этом роде E>}
Здравствуйте, emergenter, Вы писали:
E>Подскажите пожалуйста что обозначает данная запись (какое тут условие)?? E>unsigned int i; E>if(i&&0x1) E>{
E>}
Бред какой-то... && это логическое И. i приводится к bool и 0x1 проводится к bool а bool(0x1)==true те получаем if(i&&true) что тоже самое что просто if(i).
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Анатолий Широков, Вы писали:
АШ>>Циклический сдвиг битов i на 1 бит вправо или деление i на 2. WH>Зачем циклический? Просто сдвиг.
Да, выступил я по полной программе. "Хочу загладить, искупить". Ужас как стыдно.
Здравствуйте, Анатолий Широков, Вы писали:
АШ>Здравствуйте, emergenter, Вы писали:
E>>Подскажите пожалуйста что обозначает данная запись (какое тут условие)?? E>>unsigned int i; E>>if(i&&0x1) E>>{ АШ> // если i нечетное или 0 бит i равен '1' — что-то в этом роде E>>}
это только еслии автор описАлся, вот это дествительно проверка на нечетность
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, Анатолий Широков, Вы писали:
АШ>>Здравствуйте, emergenter, Вы писали:
E>>>Подскажите пожалуйста что обозначает данная запись (какое тут условие)?? E>>>unsigned int i; E>>>if(i&&0x1) E>>>{ АШ>> // если i нечетное или 0 бит i равен '1' — что-то в этом роде E>>>}
SAS>это только еслии автор описАлся, вот это дествительно проверка на нечетность
SAS>
Здравствуйте, Анатолий Широков, Вы писали:
АШ>Здравствуйте, emergenter, Вы писали:
E>>Подскажите пожалуйста что обозначает данная запись (какое тут условие)?? E>>unsigned int i; E>>if(i&&0x1) E>>{ АШ> // если i нечетное или 0 бит i равен '1' — что-то в этом роде E>>}
на самом деле эта запись значит (i!=0) и "истина", т.е. она эквиваленьна в данном случае if (i)
Re[4]: if ( i&&0x1)
От:
Аноним
Дата:
05.06.04 05:58
Оценка:
SAS>блин сорри — это всегда i != 0
правда?
а если i == 0?
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, Аноним, Вы писали:
SAS>>>блин сорри — это всегда i != 0 А>>правда? А>>а если i == 0?
SAS>если i == 0, то тогда (i != 0) == 0 и все условие (0 && 1) == false
Именно. Но это как-то не совсем согласовано с твоим утверждением, что данная конструкция всегда != 0.
Здравствуйте, WolfHound, Вы писали:
WH>Просто сдвиг.
Ну не совсем просто
5.8 Shift operators
3 The value of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a nonnegative value, the value of the result is the integral part of the quotient of E1 divided by the quantity 2 raised to the power E2. If E1 has a signed type and a negative value, the resulting value is implementation-defined.
Здравствуйте, 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 >>
Перекуём баги на фичи!
Re[4]: if ( i&&0x1)
От:
Аноним
Дата:
10.06.04 05:35
Оценка:
удивительно как на такие простые вопросы находится столько вариантов ответа..) странно что среди них есть правильные.)
предлагаю еще одну тему посложнее.)
что будет после
int i=0;
++i++;
cout<<" i = "<<i;
Здравствуйте, Аноним, Вы писали:
А>удивительно как на такие простые вопросы находится столько вариантов ответа..) странно что среди них есть правильные.) А>предлагаю еще одну тему посложнее.) А>что будет после А> int i=0; А> ++i++; А> cout<<" i = "<<i;
А>а если не будет то в чем проблема.)))
The result of the postfix increment or decrement operation is the value of the postfix-expression before the increment or decrement operator is applied. The type of the result is the same as that of the postfix-expression but is no longer an l-value. After the result is obtained, the value of the operand is incremented (or decremented).
Postfix increment and decrement has higher precedence than prefix increment and decrement operators.
Из всего вышенаписанного следует, что префиксная операция инкремента получает не l-value.