Re: BUG #4114: Inconsistent shift operator

Поиск
Список
Период
Сортировка
От Zdenek Kotala
Тема Re: BUG #4114: Inconsistent shift operator
Дата
Msg-id 480B88CE.3010202@sun.com
обсуждение исходный текст
Ответ на BUG #4114: Inconsistent shift operator  ("Roman Kononov" <kononov@dls.net>)
Ответы Re: BUG #4114: Inconsistent shift operator  (Sam Mason <sam@samason.me.uk>)
Список pgsql-bugs
Roman Kononov napsal(a):
> The following bug has been logged online:
>
> Bug reference:      4114
> Logged by:          Roman Kononov
> Email address:      kononov@dls.net
> PostgreSQL version: 8.3.1
> Operating system:   x86_64 GNU/Linux
> Description:        Inconsistent shift operator
> Details:
>
> The below test cases show the obvious inconsistency between different
> integer types.
>
> test=# \t
> Showing only tuples.
> test=# select 1::int2 << 17;
>          0
>
> test=# select 1::int4 << 33;
>          2
>
> test=# select 1::int8 << 65;
>          2
>
> test=# select 2::int2 >> 17;
>          0
>
> test=# select 2::int4 >> 33;
>          1
>
> test=# select 2::int8 >> 65;
>          1

It seems to be OK regarding how C shift operator works. Try

#include <stdio.h>
#include <inttypes.h>

void fce(int16_t arg1, int32_t arg2)
{
         int16_t res = arg1 << arg2;
         printf("result: %i\n", res);
}

int main()
{
         fce(1,17);
         return 0;
}



        Zdenek

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Inconsistent shift operator
Следующее
От: Sam Mason
Дата:
Сообщение: Re: Inconsistent shift operator