![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Согласно Керниган, Ритчи, рассчитываю на очередность (см. код ниже):
1. Выражение в скобках, где выполняется (а) ~0 (б) UINT32SIZE - n (в) сдвиг 2. Сдвиг результата от действий в скобках на p. Помогите, плз, разобраться где я наврал...
Пробовал также вариант uint32 m = (~0 >> 32 - n) << p; чтобы не учитывать операторы макроса для UINT32SIZE... Это сообщение отредактировал(а) FiMa1 - 11.4.2007, 12:59 |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
что-то я не совсем понял, что тебе надо... Чтобы нерабочий вариант работал так же как рабочий?
ну сделай приведение типа 0 явно: uint32 m = (~(uint32)0 >> (UINT32SIZE - n)) << p; Или я не о том? -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
FiMa1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Все так, спасибо. А без явного приведения никак? Почему у Кернигана с Ритчи прокатывает вариант:
|
||||
|
|||||
SerpentVV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 27.11.2006 Где: Астрахань Репутация: 1 Всего: 1 |
Скорее всего потому, что они писали про язык С, а ты компилируешь в С++.
А С и С++ - две большие разницы... |
|||
|
||||
FiMa1 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Ответ - нет.. Все варианты (и Ритчи и мои) компилировались в MS Visual Studio .NET 2003, проекты заводились как С++. Вариант Керниганf&Ритчи работает согласно задумке:
В моём же варианте непорядок... |
||||||
|
|||||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
ответ понятен? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |