Язык программирования C/С++
16.07 · ред.
"СобеЗ C++" 🚀 Часть 2
⁉️Какой тип данных вы получите, сложив два bool(а)?
Как компилятор обрабатывает типы данных и какие преобразования происходят во время выполнения арифметических операций с логическими значениями?
Чему будут равны с и возвращаемое значение функции foo()?
Очевидно, их тип не bool, а int.
‼️ Почему?
Чтобы понять, что происходит, давай-те вставим код в CppInsights, который выполняет трансформацию кода. Это поможет вам увидеть ваш исходный код глазами компилятора.
Вы видите: int c = static_cast<int>(a) + static_cast<int>(b);
И что-то очень похожее для функции foo. Таким образом, оба значения типа bool, a и b приводятся к целым числам перед сложением.
Хоть и логические значения (bool) в C++ могут быть либо true (1), либо false (0), при арифметических операциях они приводятся к целым числам (int).
Переменная c и возвращаемое значение функции foo() имеют тип int и значение 2
#интервью #программирование #программист #код #задача #собес #собеседование #решениееще контент в этом сообществе
еще контент в этом соообществе
Язык программирования C/С++
16.07 · ред.
войдите, чтобы увидеть
и подписаться на интересных профи