Re[9]: Беззнаковая арифметика
От: elcste  
Дата: 20.10.06 07:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Изображения хранятся как массивы байтов (байт = unsigned char), чтобы

>> экономить память. Но беззнаковой арифметики опять нет, так как в
>> выражениях unsigned char продвигается (promote) до int (а не unsigned).
C>С чего бы? У меня, например, везде работа с ними ведется как с unsigned
C>char'ами, и никуда они не продвигаются.

Это, строго говоря, зависит от реализации. Но подозреваю, что как раз в Вашей они продвигаются. В C это называется integer promotions, а в C++ — integral promotions.
Re: Ещё хороший пример беззнаковой арифметики
От: remark Россия http://www.1024cores.net/
Дата: 20.10.06 07:21
Оценка: 2 (1) +1 :))
Ещё хороший пример беззнаковой арифметики:

    std::vector<int> v (3);
    for (size_t i = v.size() - 1; i >= 0; --i)
        std::cout << v[i];


Внимание вопрос: сколько раз выполнится цикл?


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: Ещё хороший пример беззнаковой арифметики
От: np9mi7 Россия  
Дата: 20.10.06 07:40
Оценка: :)
Здравствуйте, remark, Вы писали:

R>Внимание вопрос: сколько раз выполнится цикл?


Говорила мама, используй at и профайлер. Хотя это к теме не совсем относиться;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[3]: Ещё хороший пример беззнаковой арифметики
От: remark Россия http://www.1024cores.net/
Дата: 20.10.06 07:59
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>Здравствуйте, remark, Вы писали:


R>>Внимание вопрос: сколько раз выполнится цикл?


N>Говорила мама, используй at и профайлер.


Если это уже скомпилировано (без варнингов, кстати), собрано и отдано клиенту, то ему не будет легче от того, что там at() вместо [].



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[4]: Ещё хороший пример беззнаковой арифметики
От: np9mi7 Россия  
Дата: 20.10.06 08:28
Оценка:
Здравствуйте, remark, Вы писали:

R>Если это уже скомпилировано (без варнингов, кстати), собрано и отдано клиенту, то ему не будет легче от того, что там at() вместо [].


Он хотя бы увидит что приложение выводит странное сообщение об ошибке, пишет странное сообщение в лог или вообще, при некоторых входных данных падает, а не просто неправильные данные на выходе, непонятно из — за чего;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[5]: Ещё хороший пример беззнаковой арифметики
От: remark Россия http://www.1024cores.net/
Дата: 20.10.06 08:47
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>Здравствуйте, remark, Вы писали:


R>>Если это уже скомпилировано (без варнингов, кстати), собрано и отдано клиенту, то ему не будет легче от того, что там at() вместо [].


N>Он хотя бы увидит что приложение выводит странное сообщение об ошибке, пишет странное сообщение в лог или вообще, при некоторых входных данных падает, а не просто неправильные данные на выходе, непонятно из — за чего;


Я думаю, если обратится к массиву с индексом 4294967296, то приложение ничего неправильно уже не выдаст


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[6]: Ещё хороший пример беззнаковой арифметики
От: np9mi7 Россия  
Дата: 20.10.06 10:17
Оценка:
Здравствуйте, remark, Вы писали:

R>Я думаю, если обратится к массиву с индексом 4294967296, то приложение ничего неправильно уже не выдаст


А если sizeof (int) == 8?

R>
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[7]: Ещё хороший пример беззнаковой арифметики
От: remark Россия http://www.1024cores.net/
Дата: 20.10.06 10:20
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>Здравствуйте, remark, Вы писали:


R>>Я думаю, если обратится к массиву с индексом 4294967296, то приложение ничего неправильно уже не выдаст


N>А если sizeof (int) == 8?


А если sizeof (int) == 1 бит, то вообще всё будет работать, т.к. выхода за пределы массива не будет

R>>


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[8]: Ещё хороший пример беззнаковой арифметики
От: np9mi7 Россия  
Дата: 20.10.06 10:27
Оценка:
Здравствуйте, remark, Вы писали:

R>А если sizeof (int) == 1 бит, то вообще всё будет работать, т.к. выхода за пределы массива не будет


Ладно ладно... Если ! (sizeof (int) < 8) то вполне можно работать с такими индексами
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.