Максимально возможное значение типа, С++ |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Максимально возможное значение типа, С++ |
sheka |
1.12.2011 19:48
Сообщение
#1
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Максимально возможное значение типа
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 |
1.12.2011 19:59
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Не пользоваться неправильным методом вычисления. Допустим, размер типа - 4 байта (тот же int). Что выдает твоя формула?
(1 << (4 << 3)) - 1 = (1 << 32) - 1 = 4294967295 (для этого тоже нужны доп. телодвижения, чтобы получить это число, но допустим, получил). Но макс. значение типа int вполовину меньше, он же знаковый... |
sheka |
1.12.2011 20:01
Сообщение
#3
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Для беззнаковых.
|
IUnknown |
1.12.2011 20:02
Сообщение
#4
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
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 |
1.12.2011 20:07
Сообщение
#5
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Т.е. культурного решения, кроме как взять тип большей вместимости, нет?
|
IUnknown |
1.12.2011 20:08
Сообщение
#6
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
См. выше, и не изобретай велосипед. "Все уже придумано до нас" (С)
|
TarasBer |
2.12.2011 9:18
Сообщение
#7
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
unsigned long i = -1
получили максимальное значение, гы -------------------- |
Текстовая версия | 30.09.2024 18:17 |