![]() |
|
Модераторы: bsa |
![]()
|
|
| Killer_13 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Язык программирования "С"
Значит, нужно проверить строку, и показать является ли введенная строка числом типа unsigned int. Тип unsigned int должен функционировать независимо от архитектуры процессора. насколько я знаю(читал) тим unsigned int это диапазон от "0" до "4294967295" мне нужно только проверить, лежит ли мое число в этом диапазоне? Или как? В предыдущей моей теме, мне подсказали, что максимальное значение unsigned int вычисляется
другой человек подсказал
Если у меня в программе стоит
говорит при компиляции "warning: this decimal constant is unsigned only in ISO C90" Как же мне определить является ли моя строка числом типа unsigned int не зависимо от архитектуры процессора? Спасибо. Это сообщение отредактировал(а) Killer_13 - 26.4.2009, 17:06 |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
вместо 0u-1 лучше ~0
|
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
С кодом
компилируется без ошибок, а как на счет моего вопроса? |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
это должна функция преобразования строки в число определять
|
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
нет, у меня определяет - является ли строка числом, если является, мне нужно доказать(проверить), что это число, число типа unsigned int
|
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
unsigned int - это число в диапазоне от 0 до 65535
Добавлено через 4 минуты и 8 секунд для независимости от процессора используй тип long и проверяй:
|
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Тоисть можно написать так и это будет верно?
Спасибо за ответ. Извините, "unsigned long" - опечатка Это сообщение отредактировал(а) Killer_13 - 26.4.2009, 19:51 |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
это будет unsigned int, а не unsigned long.
long я рекомендовал использовать для того, чтобы не было зависимости от архитектуры. Потому, что в 16-ти разрядной системе
а в 32-х разрядной это будет 65535 |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
курите стандарт:
|
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
да, так. Получается, что тебе надо сравнивать не с unsigned long, а с 4-мя байтами, а это константа. Если нужно сравнить с максимальным значением в данной архитектуре, то можно воспользоваться стандартом, который любезно сюда кинул J0ker - ULONG_MAX или же с этим
Это сообщение отредактировал(а) Cheloveck - 26.4.2009, 21:08 -------------------- ![]() |
||||
|
|||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Для задания константы типа unsigned добавьте U в конце, для константы типа long - L, long long (компилятор gcc) - LL.
Макимальные и минимальные значения приведены в файле <limits.s>. На
компилятор может выругаться: -1 вне диапазона допустимых значений для unsigned long
|
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Не сработает, если в исходной строке будут лидирующие нули |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
xvr, а еще не сработает, если там будут левые символы - я дал концепцию, а защита от дурака не моя забота
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |