Что получится и как это работает?(c++)

214
27 июля 2021, 04:20
string c1 = "00011001"; // вот такая строка к примеру
c1[7] - '0' == ?
//и
c1[7] - '1' == ?
//и
c1[7] - 2 == ? // здесь 2 не как символ

Подскажите, пожалуйста, что получится в каждом варианте и почему.

Answer 1

Спецификации языков С и С++ не специфицируют конкретных значений для символьных литералов, но однако гарантируют, что символьные литералы '0', '1', '2', ..., '9' имеют последовательные целочисленные значения (именно в таком порядке). Поэтому, например, значение выражения '5' - '0' гарантированно равно 5.

В вашем случае c1[7] равно '1' и по этой причине

c1[7] - '0' == 1
c1[7] - '1' == 0

Чему именно равно c1[7] - 2 сказать невозможно, ибо, как сказано выше, никаких конкретных значений для этих констант спецификация языка не оговаривает. Это зависит от конкретной платформы. Можно лишь сказать, что c1[7] - 2 равно '0' - 1. (Придушенный голос из зала - "Сорок семь" - вызывает лишь снисходительную ухмылку с моей стороны.)

READ ALSO
Как повесить click на label с input?

Как повесить click на label с input?

Делаю на Wordpress форму с возможностью добавления нескольких фалов путём создание нескольких заранее определённых инпутов:

215
Помогите с Динамической Таблицей JAVASCRIPT

Помогите с Динамической Таблицей JAVASCRIPT

Я написала таблицу JS+HTML Но у меня возникла проблема с добавлением строкиВо время добавления строки дублируется значение первой строки

118
Django Как сделать дефолтные Гет запросы?

Django Как сделать дефолтные Гет запросы?

Есть 2 Get запроса, чтобы фильтровать товар ( смотрите картинку)

352