возможно, некоторая комбинация этих настроек должна быть в Вашем файле VIMRC.
syntax on
set syn=auto
set showmatch
filetype on
filetype plugin on
filetype indent on
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
Причина, по которой нет возможности определить конструктор по умолчанию, проиллюстрирована следующим выражением:
new MyStruct[1000];
У вас есть 3 варианта здесь
.NET делает то же самое как для структур, так и для классов: поля и элементы массива закрываются нулями. Это также обеспечивает более согласованное поведение между структурами и классами и отсутствие небезопасного кода. Это также позволяет платформе .NET не специализироваться на чем-то вроде new byte [1000]
.
И это конструктор по умолчанию для структур. операция дополнения к своему операнду, что имеет эффект реверсирования каждого немного. Операторы побитового дополнения: предопределено для int, uint, long и ulong.
static void Main()
{
int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
foreach (int v in values)
{
Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
}
}
~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
Он называется Тильда (для ваших будущих поисков) и обычно используется для побитового НЕ (т.е. дополнение каждого бита)
Это называется тильдой, и похоже, что некоторые языки используют ее как побитовое НЕ: http://en.wikipedia.org/wiki/Tilde#Computer_languages
побитовое отрицание , дает побитовое дополнение операнда.
Во многих языках программирования (в том числе из семейства C), побитовый оператор НЕ - "~" (тильда). Этот оператор не следует путать с оператором "логическое не", "!" (восклицательный знак), который в C ++ рассматривает все значение как единое целое Boolean - изменение истинного значения на false, и наоборот, и что C делает значение от 0 до 1 и значение кроме от 0 до 0. «Логическое не» не является побитовой операцией.
В C это оператор поразрядного дополнения . По сути, он смотрит на двоичное представление числа и преобразует единицы в нули, а нули в единицы.
В большинстве C-подобных языков побитовое нет. Это займет необработанную двоичную реализацию числа и заменит все 1 на 0 и 0 на 1.
Например:
ushort foo = 42; // 0000 0000 0010 1010
ushort bar = ~foo; // 1111 1111 1101 0101
Console.WriteLine(bar); // 65493