![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
sheka |
![]()
Сообщение
#1
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Максимально возможное значение типа
unsigned int j = (1 << (sizeof(имя типа) << 3)) - 1;как избавиться от вычисления 1 << (sizeof(имя типа) << 3) т.к. warning: left shift count >= width of type ? Можно, конечно, так, но это не красиво: unsigned int j = ((unsigned int)(1 << ((sizeof(int *) << 3) - 1)) - 1) + (1 << ((sizeof(int *) << 3) - 1));Ну или просто обмануть, умножив на 2. Сообщение отредактировано: sheka - 1.12.2011 19:59 |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не пользоваться неправильным методом вычисления. Допустим, размер типа - 4 байта (тот же int). Что выдает твоя формула?
(1 << (4 << 3)) - 1 = (1 << 32) - 1 = 4294967295 (для этого тоже нужны доп. телодвижения, чтобы получить это число, но допустим, получил). Но макс. значение типа int вполовину меньше, он же знаковый... |
sheka |
![]()
Сообщение
#3
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Для беззнаковых.
|
IUnknown |
![]()
Сообщение
#4
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
long long maxval = (static_cast<long long>(1) << (sizeof(int) << 3)) - 1; Но это будет работать только для тех типов, размер которых меньше размера long long иначе опять получишь то же предупреждение. А вот это: cout << numeric_limits<long long>::max() << endl; // #include <limits> будет работать всегда ![]() Сообщение отредактировано: IUnknown - 1.12.2011 20:07 |
sheka |
![]()
Сообщение
#5
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Т.е. культурного решения, кроме как взять тип большей вместимости, нет?
|
IUnknown |
![]()
Сообщение
#6
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
См. выше, и не изобретай велосипед. "Все уже придумано до нас" (С)
![]() |
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
unsigned long i = -1
получили максимальное значение, гы -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 30.06.2024 0:02 |