Спецификация для strtol
концептуально делит входную строку на «начальные пробелы», «последовательность субъектов» и «конечную строку» и определяет «последовательность субъектов» как:Сложный язык в спецификации strtol и др.
самая длинная начальная подпоследовательность входной строки, начиная с первого символа небелого пробела, который имеет ожидаемую форму. Тематическая последовательность не должна содержать символов, если входная строка пуста или состоит полностью из символов пробела или если первый символ небелого пробела отличается от знака или допустимой буквы или цифры.
В свое время я думал, что «длинная начальная подпоследовательности» бизнес был сродни путь scanf
работ, где "[email protected]"
будет сканировать в "0x"
, отказавшего матч, а затем "@"
в следующей непрочитанной характер. Однако после некоторого обсуждения я в основном убежден, что strtol
обрабатывает самую длинную начальную подпоследовательность, которая имеет ожидаемую форму, а не самую длинную начальную строку, которая является начальной подпоследовательностью некоторой возможной строки ожидаемой формы.
Что еще смущает меня этот язык в спецификации:
Если испытуемый последовательность пуста или не имеет ожидаемую форму, не выполняется преобразование; значение str хранится в объекте, на который указывает endptr, при условии, что endptr не является нулевым указателем.
Если мы принимаем то, что, кажется, правильное определение «испытуемым последовательности», не существует такого понятия, как непустой сюжетную последовательность, которая не имеет ожидаемую форму, и вместо того, чтобы (во избежание дублирования и путаницы) текст следует просто читать:
Если последовательность предметов пуста, преобразование не выполняется; значение str хранится в объекте, на который указывает endptr, при условии, что endptr не является нулевым указателем.
Может ли кто-нибудь прояснить эти вопросы для меня? Возможно, полезной была бы ссылка на прошлые обсуждения или любые соответствующие отчеты о дефектах.
И простой нормативный пример мог бы очистить все до нуля ... –
Действительно. У меня такое чувство, что комитет действительно пытался избежать явного страха открыть аргумент о том, как он должен себя вести ... –