[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Программирование на функциональных языках - как научить?



On Fri, Aug 21, 2009 at 03:09:21AM +0400, Stanislav Maslovski wrote:
> On Fri, Aug 21, 2009 at 02:37:44AM +0400, Stanislav Maslovski wrote:
> > Чешем репу и вспоминаем, что сдвиги беззнаковых у нас циклические, а
> > не арифметические! С арифметическим сдвигом получится 0, как я и писал.
> 
> Про циклический сдвиг я, конечно, пробредил, сдвиг беззнаковых должен
> быть просто логическим. Но эффект налицо. Программисты на С, ау!

Что-то мне не спится.

Стандарт ANSI C, пункт 3.3.7:
======================================================================
... If the value of the right operand is negative or is greater than
or equal to the width in bits of the promoted left operand, the
behavior is undefined.

... The result of E1 >> E2 is E1 right-shifted E2 bit positions...
If E1 has a signed type and a negative value, the resulting value is
implementation-defined.
======================================================================

С99 просто повторяет слово в слово эти пункты.

Т.е., даже наличие арифметического сдвига не гарантируется.

А ведь все это в свое время изучалось. Воистину, неиспользуемые знания
- утрачиваемые знания.

-- 
Stanislav


Reply to: