2014-09-11 2 views
-4

Я только начал кодирование в C++, и я видел в некоторых примерах код этот символ: < <
Есть ли equavalent в C# если так Что это? Спасибо заранее.Что такое эквивалент для << из C++ в C#?

+1

Это оператор сдвига бит. –

+0

, а это значит? – Djeroen

+2

[Посмотрите на это] (http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B) – Slyps

ответ

4

Отказ от ответственности: Я ничего не знаю о C#; этот ответ просто описывает оператор в C++.

Это зависит от контекста; этот оператор часто перегружен означает разные вещи для разных типов.

Для целых типов это побитовая сдвиг влево оператор; он принимает битовый шаблон значения, и перемещает его влево, вставляя ноль в менее значащих битов:

unsigned x = 6;  // decimal 6, binary 00110 
unsigned y = x << 2; // decimal 24, binary 11000 

В общем, левый сдвиг на N битов эквивалентно умножению на 2 N (поэтому здесь смещение на 2 бита умножается на 4).

Я уверен, что использование этого оператора в C# аналогично использованию в C++.

Стандартная библиотека перегружает оператора, чтобы вставить значение в выходной поток , чтобы производить форматированный вывод на консоли или в файлах или другими способами.

#include <iostream> // declare standard input/output streams 

std::cout << 42 << std::endl; // print 42 to the console, end the line, and flush. 

Я думаю, C# имеет TextWriter или что-то для обработки форматированного вывода, с Console.Out или что-то, эквивалентной std::cout; но C# использует обычные вызовы методов, а не перегруженный оператор.

2

operator<< означает то же самое в C++, что и в C#; это оператор сдвига слева и перемещает все биты в один бит влево.

Но на C++ вы можете перегружать большинство операторов, чтобы они делали все, что угодно, для пользовательских типов. Возможно, чаще всего операторы с левым и правым сдвигами перегружаются для потоков, чтобы они означали «вставить эту вещь в этот поток» (левый сдвиг) или «извлечь переменную этого типа из этого потока» (с правой стороны).

Смежные вопросы