Как показано в http://ideone.com/RdINqa, std::stoul
не выбрасывает std::out_of_range
для отрицательных чисел, но обертывает их вокруг. Почему это? Похоже, что -4 выходит за пределы диапазона unsigned long
, поэтому он должен бросить.Почему std :: stoul конвертирует отрицательные числа?
ответ
21,5 Числовые преобразования
unsigned long stoul(const string& str, size_t *idx = 0, int base = 10);
эффекты: ... называйте [s]
strtoul(str.c_str(), ptr, base)
... возвращает преобразованный результат, если таковые имеются.Throws: ...
out_of_range
, если преобразованное значение находится за пределами диапазона представляемых значений для типа возврата.
"Конвертированное значение" здесь - значение, возвращаемое strtoul
. Который, конечно, относится к типу unsigned long
и поэтому не может находиться за пределами диапазона представляемых значений для возвращаемого типа stoul
, который также является unsigned long
.
Насколько я могу судить, только stoi
может бросить out_of_range
, потому что она возвращает int
, но использует strtol
, который возвращает long
.
Кроме того, согласно стандарту C, указанному strtoul
, требуется принять строку "-4"
и вернуть значение, равное -(unsigned long)4
. Почему это указано именно так, я не знаю.
- 1. Почему printf конвертирует большие числа?
- 2. Почему функция генерирует отрицательные числа?
- 3. Как использовать std :: stoul и std :: stoull в Android?
- 4. C++ двоичные отрицательные числа
- 5. Почему valuelist конвертирует целые числа в float?
- 6. Выделите отрицательные числа красным
- 7. Почему getrandbits() никогда не генерирует отрицательные числа?
- 8. Почему этот IF допускает отрицательные числа?
- 9. Почему rand() + rand() создает отрицательные числа?
- 10. Почему отрицательные числа больше положительных чисел?
- 11. Почему Python ECDSA не поддерживает отрицательные числа?
- 12. Отрицательные числа со временем
- 13. Почему нет std :: stou?
- 14. отрицательные числа с плавающей запятой, представленные как отрицательные целые числа?
- 15. Программа, которая будет показывать только отрицательные числа
- 16. Положительные и отрицательные числа
- 17. Случайные и отрицательные числа
- 18. mysql предотвращает отрицательные числа
- 19. Составители и отрицательные числа
- 20. Разрешить отрицательные десятичные числа
- 21. str_repeat и отрицательные числа
- 22. Отрицательные числа в процентах
- 23. System.nanotime, дающий отрицательные числа
- 24. не получают отрицательные числа
- 25. #define отрицательные числа?
- 26. Добавить отрицательные шестнадцатеричные числа
- 27. Отрицательные числа в Y86
- 28. формат фото отрицательные числа
- 29. Modulo, используя отрицательные числа
- 30. отрицательные целые числа в django
спасибо, это раздражает – Kal