объявление двумерного массива динамически:
#include<iostream>
using namespace std;
int main()
{
int x = 3, y = 3;
int **ptr = new int *[x];
for(int i = 0; i<y; i++)
{
ptr[i] = new int[y];
}
srand(time(0));
for(int j = 0; j<x; j++)
{
for(int k = 0; k<y; k++)
{
int a = rand()%10;
ptr[j][k] = a;
cout<<ptr[j][k]<<" ";
}
cout<<endl;
}
}
Теперь в приведенном выше коде мы взяли двойной указатель и присвоили ему динамическую память и дали значение столбцов. Здесь выделенная память предназначена только для столбцов, теперь для строк нам нужен цикл for и присваивать значение для каждой строки динамической памяти. Теперь мы можем использовать указатель именно так, как мы используем 2D-массив. В приведенном выше примере мы тогда присваивали случайные числа нашему двумерному массиву (указателю). Все о DMA двумерного массива.
int rule = 0;
rule |= 0x80;
http://msdn.microsoft.com/en-us/library/kxszd0kx.aspx | оператор определяется для всех типов значения. Я думаю, что это будет, привел к намеченному результату. "| =" оператор, или затем присвойте оператор, который является просто сокращением от правила = правило | 0x80.
Одна из более изящных вещей о C# - то, что он позволяет Вам сделать сумасшедшие вещи как типы значения злоупотребления просто на основе их размера. 'Интервал' является точно тем же, поскольку байт, кроме компилятора бросит предупреждения, при попытке использовать их в качестве обоих одновременно. Просто придерживаться одного (в этом случае, интервал) работает хорошо. Если Вы заинтересованы готовность приблизительно на 64 бита, можно указать int32, но все ints являются int32s, даже работающим в x64 режиме.
C# не имеет литерального суффикса для байта. u = uint, l = долго, ул. = ulong, f = плавание, m = десятичное число, но никакой байт. Необходимо бросить его.
Это работает:
rule = (byte)(rule | 0x80);
, По-видимому, выражение 'правило | 0x80' возвращает интервал, даже если Вы определяете 0x80 как 'байт константы 0x80'.
Термин, который Вы ищете, является "Литеральным", и к сожалению C# не имеет литерала байта.
Вот список все литералы C# .
Согласно Спецификация ECMA, pg 72 там не является никаким литералом байта. Только целочисленные литералы для типов: интервал, uint, долго, и ulong.
Похож на Вас, вероятно, просто придется сделать это ужасный путь: http://msdn.microsoft.com/en-us/library/5bdb6693.aspx .
К сожалению, Ваше единственное обращение за помощью должно сделать это просто способ, которым Вы имеете. Нет никакого суффикса для маркировки литерала как байт. | оператор не предусматривает неявное преобразование, как присвоение (т.е. инициализация) было бы.
, По-видимому, выражение 'правило | 0x80' возвращает интервал, даже если Вы определяете 0x80 как 'байт константы 0x80'.
я думаю, что правило является числами как 0x80 значения по умолчанию к интервалу, если Вы не включаете литеральный суффикс. Таким образом для выражения rule | 0x80
, результатом будет интервал, так как 0x80 является интервалом и правилом (который является байтом), может безопасно быть преобразован в интервал