Здравствуйте Bill, Вы писали:
B>Данное выражение может быть использовано:
B> 1. для определения значения val как стпень 2-х — (val &= (val-1)) == 0;
B> 2. для подсчета количества единиц байте, слове и т.д. (естественно требуется цикл).
Или не требуется (Ближе к низу страницы)
Здравствуйте Аноним, Вы писали:
А>Привет.
А>Попалась в коду такая строчка:
А>А>int foo(unsigned val)
А>{
А> val &=(val-1);
А> // ... остальное пропущенно
А>}
А>
А>Вопрос, что такое unsigned? Я понимаю, что беззнаковый тип, но какой.
А>Если бы unsigned int — то все ясно, а есть просто, то что это?
А>И еще, объясните пожалуйста подробнее что это за выражение:
А>val&=(val-1)
А>И что оно делает при любом (unsigned) val?
А>Спасибо
int в С++ является типом по умолчанию, т.е., если ты пишешь
func(/*some args*/)
{
//smth
}
то func — усть функция, возвращающая int. Так же и с unsigned, short & long
Здравствуйте Аноним, Вы писали:
А>int в С++ является типом по умолчанию, т.е., если ты пишешь
А>А>func(/*some args*/)
А>{
А> //smth
А>}
А>
А>то func — усть функция, возвращающая int. Так же и с unsigned, short & long
В C++ нет типов по умолчанию. Функция 'func' в данном случае объявлена некорректно и, с точки зрения С++, вызовет ошибку компиляции. Ситуация с 'unsigned', 'short' и 'long' — это совершенно другая история, никакого отношения к "типам по умолчанию" не имеющая.