Насколько я понимаю, оператор вставки при использовании с любым объектом ostream, таким как std::cout
, просто вставит следующие значения. Но когда я использую скобки, я получаю результат, отличный от ожидаемого. Я пытаюсь понять, почему использование оператора вставки со скобками в коде, показанном ниже, дает следующий результат на С++?
Код
std::cout << (2 << 3) << std::endl;
Результат
16
Я не знал, что <<
также означает оператор битового сдвига в C++. Все эти дни я думал, что это всего лишь оператор вставки при использовании без перегрузки оператора!
<<
был оператором битового сдвига в C до появления C++. Это по-прежнему оператор «битового сдвига» в C++, и через некоторое время вы доберетесь до главы в своей книге по C++, которая объясняет, что означает «перегрузка оператора», и все станет кристально ясным.
@ArunKumar — 2<<3
использует встроенный оператор <<
. Потоковые вставки — все перегруженные операторы.
Он становится битовым сдвигом вместо оператора вставки, когда вы заключаете его в скобки.
2 в двоичном формате это 10
После сдвига влево на 3 двоичный код становится 10000
, что эквивалентно 16.
Почему оператор вычитания дает другой результат в математическом выражении, когда я использую дополнительные скобки: 1 - (1 + 1)
? Ответ: Скобки меняют порядок операций.
Что значит вставить 3 в 2? Ответ: 2 << 3
вообще не является оператором вставки потока. В конце концов, 2 — это не поток символов. Это оператор битового сдвига влево. Разные операторы имеют разное значение для разных типов.
2<<3
означает сдвинуть цифру 2 на 3 бита влево. Итак2 << 3 = 16
и вот что напечатано. Чтобы напечатать отдельные цифры, выполнитеstd::cout << 2 <<3 << '\n';