Как правильно делать вычитание беззнаковых чисел?
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Например, функция strlen() возвращает значение типа size_t. Как я поняла из хелпа к VS, этот тип определяется как максимально длинное (в байтах) целое беззнаковое число.
Я хочу определить какая из двух строк длиннее. Делаю так
И вот здесь мне хотелось бы получить разность s1 и s2 и по знаку этой разности определить какая из строк длиннее. Но s1 и s2 беззнаковые. Что делать?
Наткнулась на эту проблему с strlen(), но хотелось бы знать общее решение.
Грязно:
Croessmah, ты наверно хотел сказать
В исходную задачу сначала посмотри:
Croessmah, да, у тебя всё правильно. Просто невнимательно посмотрел.
А вообще, вопрос про вычитание беззнаковых чисел интересный. Я как то никогда не задумывался над этим. Хотя с другой стороны, чем «антипереполнение» при вычитании беззнаковых чисел принципиально отличается от переполнения при сложении знаковых или беззнаковых чисел? А с третьей стороны, у процессора есть флаг CF, если не ошибаюсь, который как раз реагирует на переполнения. Интересно из стандартной библиотеки есть к нему доступ?
В c++11 можно. Как дома буду, посмотрю в стандарте подробнее.
Вру. Для чисел с плавающей точкой есть, для целых не нашел.