cout<<(5<<3)<<endl;

207
20 апреля 2017, 17:38

Почему при выводе: cout<<(5<<3); На экран выводится 40.

Answer 1

Потому, что эта запись означает.

1) Сдвинуть двоичную запись числа 5 на три разряда влево.

2) Вывести результат на экран

Двоичная запись числа 5, это 101 Сдвигаем влево на три разряда 101000 = 40

Answer 2

В языке C++ встроенная операция сдвига влево E1 << E2 для беззнаковых целых типов и положительных значений знаковых целых типов определяется через операцию умножения сдвигаемого значения на 2E2, Таким образом 5 << 3 по определению равно 5 * 8, то есть 40.

Answer 3

Потому что << — это всего лишь функция с именем operator<<, которую можно перегружать как угодно и с какими угодно целями.

  1. Для int определена перегрузка вида int ::operator<<(int val, size_t offset), выполняющая побитовый сдвиг влево. Аналогичные перегрузки есть для всех встроенных числовых типов данных.

  2. std::ostream определяет свою перегрузку, std::ostream& std::ostream::operator<<(T val), выполняющую вывод строкового представления val в поток. Да, именно строкового, поскольку единственная задача istream и ostream — форматированный ввод/вывод. Для всего остального есть std::streambuf.

Из всего вышесказанного можно сделать два вывода:

  1. Смысл перегрузки и типы аргументов и возвращаемого значения компилятору неважны и оставляются на усмотрение программиста. Единственное, что фиксировано — имя функции (operator<<) и количество аргументов (2).

  2. operator<< может быть не только функцией, но и методом класса. Тогда то, что находится слева от оператора, передаётся в качестве this.

READ ALSO
Инвалидация итератора в std::map

Инвалидация итератора в std::map

Во многих источниках вроде http://wwwamse

250
Вызов С++ функции из Python

Вызов С++ функции из Python

Есть Python скрипт имеющий путь к файлу, необходимо открыть этот файл в С/С++ функции, провести с ним манипуляции и вернуть результат в Python скрипт

232
Зачем var app = app || {} в начале пишут?

Зачем var app = app || {} в начале пишут?

Зачем в начале скрипта пишут var app = app || {}; ? Ссылка на весь файл

246
Dropzone.js ошибка сервера

Dropzone.js ошибка сервера

Доброго веремени суток, возникла проблема с использование плагина, вот его настройка

287