Почему оператор вставки дает другой результат в std :: cout, когда я использую дополнительные скобки без перегрузки операторов? - PullRequest
0 голосов
/ 02 июля 2019

Насколько я понимаю, оператор вставки при использовании с любым объектом ostream, таким как std::cout, просто вставит следующие значения. Но когда я использую скобки, я получаю результат, отличный от ожидаемого. Я пытаюсь понять, почему использование оператора вставки с квадратными скобками в коде, показанном ниже, дает следующий результат в C ++?

Код

std::cout << (2 << 3) << std::endl;

Результат

16

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Почему оператор вычитания дает другой результат в математическом выражении, когда я использую дополнительные скобки: 1 - (1 + 1)? Ответ: Скобки меняют порядок операций.

Что значит вставить 3 в 2? Ответ: 2 << 3 вообще не является оператором вставки потока. В конце концов, 2 не является символьным потоком. Это оператор сдвига влево. Разные операторы имеют разные значения для разных типов.

1 голос
/ 02 июля 2019

Когда вы заключаете его в скобки, он становится битовым смещением вместо оператора вставки.

2 в двоичном виде - 10

После сдвига влево на 3 двоичный код становится 10000, что эквивалентно 16

...